diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 61a9130..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 23a89bb..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 35ffc9d..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 58918f5..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.gitignore b/Android-SourceCode/.gitignore similarity index 90% rename from .gitignore rename to Android-SourceCode/.gitignore index 4323000..aa724b7 100644 --- a/.gitignore +++ b/Android-SourceCode/.gitignore @@ -11,5 +11,5 @@ /build /captures .externalNativeBuild -'.idea' -'.idea' +.cxx +local.properties diff --git a/Android-SourceCode/README.md b/Android-SourceCode/README.md new file mode 100644 index 0000000..6f93b75 --- /dev/null +++ b/Android-SourceCode/README.md @@ -0,0 +1,78 @@ +# DrugStore + + + +DrugStore - Android app is the client side app for ordering medicines. +It is free and open source. +DrugStore for Android is a companion app for [Drugstore Web](https://drugstore.frontendsourcecode.com/). +DrugStore WebApp is for administration of orders on the admin(DrugStore) side. + + + +## About + +With this app, customers can order medicines from the pharmacy it is connected to. +The pharmacy has to host the companion administration web-app [Drugstore Web](https://drugstore.frontendsourcecode.com/). + + +## Admin Details + +[Admin Panel](https://drugstore.frontendsourcecode.com/) + +UserName: Admin + +Password: Admin@2020 + +OTP For Android Verification: 000000 + +## Features +The android app lets you: +- Authenticate via phone and password. +- Super simple sign up process with auto verification of OTP. +- Completely ad-free. +- Material Design. +- Specify medicine names. +- Or take picture of prescription and order. +- Realtime update. +- Update minimum order value in realtime. +- Block specific users from ordering. +- Multiple order statuses. +- Push notification to notifiy order status change. + + + +## Screenshots + +| Splash | Login | Register | +| ------ | ---- | ------ | +|||| + +| Home | Category | Detail | +| ------ | ---- | ------ | +|||| + +| Products | Cart | Checkout | +| ------ | ---- | ------ | +|||| + +| Order | Order Details | Prescription | +| ------ | ---- | ------ | +|||| + + +## Permissions + +On Android versions prior to Android 6.0, pharmrmacy android requires the following permissions: +- Full Network Access. +- Read and write access to external storage - To access prescription images +- Camera access - To capture image of prescription +- Receive sms - To access OTP code and verify automatically + +## Contributing +You are free to use and modify the app. + + +## License + +This application is released under GNU GPLv3 (see [LICENSE](LICENSE)). +Some of the used libraries are released under different licenses. diff --git a/Android-SourceCode/app/.gitignore b/Android-SourceCode/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/Android-SourceCode/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android-SourceCode/app/build.gradle b/Android-SourceCode/app/build.gradle new file mode 100644 index 0000000..9b3d866 --- /dev/null +++ b/Android-SourceCode/app/build.gradle @@ -0,0 +1,62 @@ +plugins { + id 'com.android.application' + id 'com.google.gms.google-services' + +} + +android { + compileSdk 32 + + defaultConfig { + applicationId "com.frontendsource.drugstore" + minSdk 21 + targetSdk 32 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + dataBinding { + enabled = true + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + namespace 'com.frontendsource.drugstore' + +} + + + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.google.android.material:material:1.7.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.2.1' + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'de.hdodenhof:circleimageview:2.2.0' + implementation 'com.google.code.gson:gson:2.8.9' + implementation 'com.squareup.retrofit2:retrofit:2.6.2' + implementation 'com.squareup.retrofit2:converter-gson:2.6.2' + implementation 'com.google.android.play:core:1.10.3' + implementation 'com.github.IamIsPra:Sheriff:1.0.2' + implementation 'com.google.firebase:firebase-messaging:23.1.0' + implementation 'com.google.firebase:firebase-analytics:21.2.0' + implementation 'com.google.android.play:core:1.10.3' + implementation 'io.github.ParkSangGwon:tedimagepicker:1.2.8' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/Android-SourceCode/app/debug/app-debug.aab b/Android-SourceCode/app/debug/app-debug.aab new file mode 100644 index 0000000..4b6fddb Binary files /dev/null and b/Android-SourceCode/app/debug/app-debug.aab differ diff --git a/Android-SourceCode/app/google-services.json b/Android-SourceCode/app/google-services.json new file mode 100644 index 0000000..143a25e --- /dev/null +++ b/Android-SourceCode/app/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "668965673854", + "project_id": "drugstore-9b873", + "storage_bucket": "drugstore-9b873.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:668965673854:android:574de1cb1ea76aa84f712f", + "android_client_info": { + "package_name": "com.frontendsource.drugstore" + } + }, + "oauth_client": [ + { + "client_id": "668965673854-tgognipqa37skaj9ns9ivnnp70r4brav.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.frontendsource.drugstore", + "certificate_hash": "2c1e00f377a13de073b109062b69fe650cf3729f" + } + }, + { + "client_id": "668965673854-q0ceredo4h3m7j7i10ff9p8b9q4vq51n.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBrdCh1jNwCBTbRd0iWJnOfiItImZ8h23E" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "668965673854-q0ceredo4h3m7j7i10ff9p8b9q4vq51n.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/Android-SourceCode/app/proguard-rules.pro similarity index 94% rename from app/proguard-rules.pro rename to Android-SourceCode/app/proguard-rules.pro index f1b4245..481bb43 100644 --- a/app/proguard-rules.pro +++ b/Android-SourceCode/app/proguard-rules.pro @@ -18,4 +18,4 @@ # If you keep the line number information, uncomment this to # hide the original source file name. -#-renamesourcefileattribute SourceFile +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android-SourceCode/app/release/app-release.aab b/Android-SourceCode/app/release/app-release.aab new file mode 100644 index 0000000..82f8a85 Binary files /dev/null and b/Android-SourceCode/app/release/app-release.aab differ diff --git a/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java b/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java new file mode 100644 index 0000000..a314e9e --- /dev/null +++ b/Android-SourceCode/app/src/androidTest/java/com/frontendsource/drugstore/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.frontendsource.drugstore; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.frontendsource.drugstore", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Android-SourceCode/app/src/main/AndroidManifest.xml b/Android-SourceCode/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..16e6668 --- /dev/null +++ b/Android-SourceCode/app/src/main/AndroidManifest.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/cityState.json b/Android-SourceCode/app/src/main/assets/cityState.json similarity index 100% rename from app/src/main/assets/cityState.json rename to Android-SourceCode/app/src/main/assets/cityState.json diff --git a/app/src/main/assets/fonts/Poppins-Black.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Black.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Black.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Black.ttf diff --git a/app/src/main/assets/fonts/Poppins-Bold.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Bold.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Bold.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Bold.ttf diff --git a/app/src/main/assets/fonts/Poppins-Light.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Light.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Light.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Light.ttf diff --git a/app/src/main/assets/fonts/Poppins-Medium.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Medium.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Medium.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Medium.ttf diff --git a/app/src/main/assets/fonts/Poppins-Regular.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Regular.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Regular.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Regular.ttf diff --git a/app/src/main/assets/fonts/Poppins-SemiBold.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-SemiBold.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-SemiBold.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-SemiBold.ttf diff --git a/app/src/main/assets/fonts/Poppins-Thin.ttf b/Android-SourceCode/app/src/main/assets/fonts/Poppins-Thin.ttf similarity index 100% rename from app/src/main/assets/fonts/Poppins-Thin.ttf rename to Android-SourceCode/app/src/main/assets/fonts/Poppins-Thin.ttf diff --git a/app/src/main/assets/state.json b/Android-SourceCode/app/src/main/assets/state.json similarity index 100% rename from app/src/main/assets/state.json rename to Android-SourceCode/app/src/main/assets/state.json diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/BaseActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/BaseActivity.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/activity/BaseActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/BaseActivity.java index 494ed47..ca92c00 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/BaseActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/BaseActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.Manifest; import android.app.ProgressDialog; @@ -13,10 +13,10 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import com.quintus.labs.drugstore.interfaces.AddorRemoveCallbacks; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.model.Order; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.interfaces.AddorRemoveCallbacks; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.lang.reflect.Type; import java.util.ArrayList; diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/CartActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CartActivity.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/activity/CartActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CartActivity.java index e816c11..c2f770d 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/CartActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CartActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.content.DialogInterface; import android.content.Intent; @@ -22,10 +22,10 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.CartAdapter; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.CartAdapter; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/CheckoutActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CheckoutActivity.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/activity/CheckoutActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CheckoutActivity.java index 7ae12c4..fc623a3 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/CheckoutActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/CheckoutActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.content.Intent; import android.graphics.Color; @@ -14,8 +14,8 @@ import androidx.appcompat.app.ActionBar; import androidx.fragment.app.FragmentTransaction; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.fragment.AddressFragment; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.fragment.AddressFragment; /** * Drug App diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/LoginRegisterActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/LoginRegisterActivity.java similarity index 92% rename from app/src/main/java/com/quintus/labs/drugstore/activity/LoginRegisterActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/LoginRegisterActivity.java index c528182..916d27a 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/LoginRegisterActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/LoginRegisterActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.os.Bundle; @@ -9,9 +9,9 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.fragment.LoginFragment; -import com.quintus.labs.drugstore.util.Utils; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.fragment.LoginFragment; +import com.frontendsource.drugstore.util.Utils; /** * Drug App diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/MainActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/MainActivity.java similarity index 90% rename from app/src/main/java/com/quintus/labs/drugstore/activity/MainActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/MainActivity.java index cdcfd9b..ca89337 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/MainActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/MainActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.annotation.SuppressLint; import android.content.Intent; @@ -34,21 +34,21 @@ import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.SearchAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.fragment.CategoryFragment; -import com.quintus.labs.drugstore.fragment.HomeFragment; -import com.quintus.labs.drugstore.fragment.MyOrderFragment; -import com.quintus.labs.drugstore.fragment.NewProductFragment; -import com.quintus.labs.drugstore.fragment.OffrersFragment; -import com.quintus.labs.drugstore.fragment.PopularProductFragment; -import com.quintus.labs.drugstore.fragment.ProfileFragment; -import com.quintus.labs.drugstore.helper.Converter; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.SearchAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.fragment.CategoryFragment; +import com.frontendsource.drugstore.fragment.HomeFragment; +import com.frontendsource.drugstore.fragment.MyOrderFragment; +import com.frontendsource.drugstore.fragment.NewProductFragment; +import com.frontendsource.drugstore.fragment.OffrersFragment; +import com.frontendsource.drugstore.fragment.PopularProductFragment; +import com.frontendsource.drugstore.fragment.ProfileFragment; +import com.frontendsource.drugstore.helper.Converter; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -189,7 +189,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { productList = productResult.getProductList(); setUpRecyclerView(); @@ -280,7 +280,7 @@ public void onClick(View view) { TextView nav_user = hView.findViewById(R.id.nav_header_name); LinearLayout nav_footer = findViewById(R.id.footer_text); if (user != null) { - nav_user.setText(user.getFname()); + nav_user.setText(user.getName()); } nav_footer.setOnClickListener(new View.OnClickListener() { @Override @@ -330,6 +330,10 @@ private void displaySelectedScreen(int itemId) { startActivity(new Intent(getApplicationContext(), CartActivity.class)); overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); break; + case R.id.nav_my_prescription: + startActivity(new Intent(getApplicationContext(), PrescriptionActivity.class)); + overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); + break; } diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/OTPActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/OTPActivity.java new file mode 100644 index 0000000..6af8c9d --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/OTPActivity.java @@ -0,0 +1,179 @@ +package com.frontendsource.drugstore.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.helper.PinEntryEditText; +import com.frontendsource.drugstore.helper.PinEntryView.PinEntryView; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.google.gson.Gson; + + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class OTPActivity extends BaseActivity { + private PinEntryView pinEntryView; + String otp; + CountDownTimer cTimer = null; + LinearLayout resendLayout,timerLayout; + TextView timer,emailText; + View progress; + User user; + Gson gson = new Gson(); + LocalStorage localStorage; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_otp); + final PinEntryEditText pinEntry = findViewById(R.id.txt_pin_entry); + resendLayout = findViewById(R.id.resend_otp_ll); + timerLayout = findViewById(R.id.timer_ll); + timer = findViewById(R.id.timer); + emailText = findViewById(R.id.email_verify_text); + progress = findViewById(R.id.progress_bar); + localStorage = new LocalStorage(getApplicationContext()); + String userString = localStorage.getUserLogin(); + user = gson.fromJson(userString,User.class); + + if(user!=null){ + emailText.setText("Please verify your email using OTP send to your register Mobile Number "+user.getMobile()); + } + + if (pinEntry != null) { + pinEntry.setOnPinEnteredListener(new PinEntryEditText.OnPinEnteredListener() { + @Override + public void onPinEntered(CharSequence str) { + otp = str.toString(); + } + }); + } + + } + + public void onResendClicked(View view) { + timerLayout.setVisibility(View.VISIBLE); + resendLayout.setVisibility(View.GONE); + + startTimer(); + resendOTP(); + + } + + private void resendOTP() { + Callcall = RestClient.getRestService(getApplicationContext()).resendVerification(user); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + + if(response!=null){ +// Log.d(TAG, "onResponse: Success"); + UserResult userResult = response.body(); + if(userResult!=null && userResult.getStatus()==200){ + Toast.makeText(OTPActivity.this, "OTP Send to your register Phone Number Please check", Toast.LENGTH_LONG).show(); + + }else{ + Toast.makeText(OTPActivity.this, userResult.getMessage(), Toast.LENGTH_LONG).show(); + + } + + + }else{ + Toast.makeText(OTPActivity.this, "Server not Responding. Please try after some time.", Toast.LENGTH_LONG).show(); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + Log.d(TAG, "onFailure: "+t.getMessage()); + Toast.makeText(OTPActivity.this, "Server not Responding. Please try after some time.", Toast.LENGTH_LONG).show(); + + } + }); + + } + + private void startTimer() { + cTimer = new CountDownTimer(30000, 1000) { + public void onTick(long millisUntilFinished) { + timer.setText(millisUntilFinished/1000+""); + } + public void onFinish() { + timerLayout.setVisibility(View.GONE); + resendLayout.setVisibility(View.VISIBLE); + } + }; + cTimer.start(); + } + + @Override + protected void onStop() { + super.onStop(); + cancelTimer(); + } + + @Override + protected void onPause() { + super.onPause(); + cancelTimer(); + } + + private void cancelTimer() { + if(cTimer!=null) + cTimer.cancel(); + } + + public void onVerifyOTPClicked(View view) { + progress.setVisibility(View.VISIBLE); + if(otp.length()<6){ + Toast.makeText(this, "Please Enter Valid OTP", Toast.LENGTH_SHORT).show(); + }else{ + user.setOtp(otp); + Callcall = RestClient.getRestService(getApplicationContext()).userActivate(user); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null){ +// Log.d(TAG, "onResponse: Success"); + UserResult userResult = response.body(); + if(userResult!=null && userResult.getStatus()==200){ + user.setVerified("1"); + Gson gson = new Gson(); + String userString = gson.toJson(user); + localStorage.createUserLoginSession(userString); + Toast.makeText(OTPActivity.this, "OTP Verified successfully.", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(getApplicationContext(),MainActivity.class)); + }else{ + Toast.makeText(OTPActivity.this, userResult.getMessage(), Toast.LENGTH_SHORT).show(); + } + + + }else{ + Toast.makeText(OTPActivity.this, "Please enter valid OTP.", Toast.LENGTH_SHORT).show(); + } + progress.setVisibility(View.GONE); + + } + + @Override + public void onFailure(Call call, Throwable t) { + Log.d(TAG, "onFailure: "+t.getMessage()); + Toast.makeText(OTPActivity.this, "Server not Responding. Please try after some time.", Toast.LENGTH_SHORT).show(); + progress.setVisibility(View.GONE); + } + }); + } + } +} \ No newline at end of file diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/PrescriptionActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/PrescriptionActivity.java new file mode 100644 index 0000000..7d9bc59 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/PrescriptionActivity.java @@ -0,0 +1,363 @@ +package com.frontendsource.drugstore.activity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.core.content.FileProvider; +import androidx.loader.content.CursorLoader; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.Manifest; +import android.app.Activity; +import android.app.Dialog; +import android.content.ActivityNotFoundException; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.util.Log; +import android.view.View; +import android.view.Window; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.OrderAdapter; +import com.frontendsource.drugstore.adapter.PrescriptionAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Prescription; +import com.frontendsource.drugstore.model.PrescriptionResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.FilePath; +import com.frontendsource.drugstore.util.FileUtils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.google.gson.Gson; +import com.squareup.picasso.Picasso; + + +import org.jetbrains.annotations.NotNull; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import gun0912.tedimagepicker.builder.TedImagePicker; +import gun0912.tedimagepicker.builder.listener.OnSelectedListener; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PrescriptionActivity extends AppCompatActivity implements + AdapterView.OnItemSelectedListener { + + private static final String TAG = "PrescriptionActivity"; + private int REQUEST_CAMERA = 0, SELECT_FILE = 1, PICK_PDF_REQUEST = 3; + File prescription; + private static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 101; + String[] category = { "Select Report Type","Medical Reports", "Blood Reports", "Scan Reports", "Medicine Prescriptions"}; + ImageView imageView; + LocalStorage localStorage; + Gson gson = new Gson(); + User user; + String _title=""; + String _remark; + TextView remarkTV; + Button upload_btn; + ListprescriptionList = new ArrayList<>(); + RecyclerView recyclerView; + PrescriptionAdapter mAdapter; + FrameLayout upload_frame; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_prescription); + checkMultiplePermissions(); + imageView = (ImageView) findViewById(R.id.image_preview); + remarkTV = findViewById(R.id.prescription_remark); + upload_btn = findViewById(R.id.upload_btn); + recyclerView = findViewById(R.id.recycler_view); + upload_frame = findViewById(R.id.upload_frame); + localStorage = new LocalStorage(getApplicationContext()); + String userString = localStorage.getUserLogin(); + user = gson.fromJson(userString,User.class); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowHomeEnabled(true); + getSupportActionBar().setTitle("Prescription"); + + + Spinner spin = (Spinner) findViewById(R.id.spinner); + spin.setOnItemSelectedListener(this); + ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item,category); + aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + //Setting the ArrayAdapter data on the Spinner + spin.setAdapter(aa); + + + upload_btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onUploadPerscription(); + } + }); + + + getPrescriptionData(); + + + } + + private void getPrescriptionData() { + Token token = new Token(user.getToken()); + Callcall = RestClient.getRestService(getApplicationContext()).getPrescription(token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null){ + PrescriptionResult prescriptionResult = response.body(); + prescriptionList = prescriptionResult.getPrescriptions(); + setupRecyclerview(); + + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + + private void setupRecyclerview() { + mAdapter = new PrescriptionAdapter(prescriptionList, PrescriptionActivity.this); + RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(),2); + recyclerView.setLayoutManager(mLayoutManager); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setAdapter(mAdapter); + + } + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + @Override + public void onItemSelected(AdapterView adapterView, View view, int position, long l) { + if(position>0){ + _title = category[position]; + } + Toast.makeText(getApplicationContext(),category[position] , Toast.LENGTH_LONG).show(); + + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + + } + + public void onSelectImage(View view) { + if(ContextCompat.checkSelfPermission(PrescriptionActivity.this, Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(PrescriptionActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + checkMultiplePermissions(); + }else{ + TedImagePicker.with(PrescriptionActivity.this) + .start(new OnSelectedListener() { + @Override + public void onSelected(@NotNull Uri uri) { + Log.d(TAG, "onSelected: "+uri); + File file = new File(FileUtils.getPath(getApplicationContext(), uri)); + if (file != null) { + prescription = file; + } else { + Toast.makeText(getApplicationContext(), "Please select image from another location", Toast.LENGTH_SHORT).show(); + } + + Picasso.get().load(uri).into(imageView); + } + }); + } + } + + + private void checkMultiplePermissions() { + if (Build.VERSION.SDK_INT >= 23) { + List permissionsNeeded = new ArrayList(); + List permissionsList = new ArrayList(); + + if (!addPermission(permissionsList, Manifest.permission.CAMERA)) { + permissionsNeeded.add("CAMERA"); + } + + if (!addPermission(permissionsList, android.Manifest.permission.READ_EXTERNAL_STORAGE)) { + permissionsNeeded.add("Read Storage"); + } + + if (permissionsList.size() > 0) { + requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), + REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS); + return; + } + } + } + + + + private boolean addPermission(List permissionsList, String permission) { + if (Build.VERSION.SDK_INT >= 23) + + if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(permission); + + // Check for Rationale Option + if (!shouldShowRequestPermissionRationale(permission)) + return false; + } + return true; + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + switch (requestCode) { + case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: { + + Map perms = new HashMap(); + // Initial + perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED); + perms.put(android.Manifest.permission.READ_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED); + + // Fill with results + for (int i = 0; i < permissions.length; i++) + perms.put(permissions[i], grantResults[i]); + if (perms.get(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED + && perms.get(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { + // All Permissions Granted + return; + } else { + // Permission Denied + if (Build.VERSION.SDK_INT >= 23) { + Toast.makeText( + getApplicationContext(), + "My App cannot run without Camera and Storage " + + "Permissions.\nRelaunch My App or allow permissions" + + " in Applications Settings", + Toast.LENGTH_LONG).show(); + finish(); + } + } + } + break; + default: + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + } + + + private void uploadDocumentFile(File file) { + RequestBody requestFile = + RequestBody.create( + MediaType.parse("*/*"), + prescription + ); + // MultipartBody.Part is used to send also the actual file name + MultipartBody.Part prescriptionFile = + MultipartBody.Part.createFormData("prescription", prescription.getName(), requestFile); + + } + + public void onUploadPerscription() { + _remark = remarkTV.getText().toString(); + if(_title.length()==0){ + Toast.makeText(this, "Please select title", Toast.LENGTH_SHORT).show(); + }else if(prescription==null){ + Toast.makeText(this, "Please select Prescription/Report", Toast.LENGTH_SHORT).show(); + }else{ + RequestBody requestFile = + RequestBody.create( + MediaType.parse("*/*"), + prescription + ); + // MultipartBody.Part is used to send also the actual file name + MultipartBody.Part prescriptionFile = + MultipartBody.Part.createFormData("image", prescription.getName(), requestFile); + RequestBody name = RequestBody.create(MediaType.parse("text/plain"), user.getName()); + RequestBody email = null; + if(user.getEmail()!=null){ + email = RequestBody.create(MediaType.parse("text/plain"), user.getEmail()); + }else{ + email = RequestBody.create(MediaType.parse("text/plain"), ""); + } + RequestBody mobile = RequestBody.create(MediaType.parse("text/plain"), user.getMobile()); + RequestBody token = RequestBody.create(MediaType.parse("text/plain"), user.getToken()); + RequestBody title = RequestBody.create(MediaType.parse("text/plain"), _title); + RequestBody remark = RequestBody.create(MediaType.parse("text/plain"), _remark); + + Callcall = RestClient.getRestService(getApplicationContext()).uploadPrescription(name,email,mobile,remark,title,prescriptionFile,token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null){ + Prescription prescription = response.body(); + if(prescription.getStatus()==200){ + Toast.makeText(getApplicationContext(),prescription.getMessage(),Toast.LENGTH_LONG).show(); + + finish(); + startActivity(getIntent()); + }else{ + Toast.makeText(getApplicationContext(),prescription.getMessage(),Toast.LENGTH_LONG).show(); + } + + } + } + + @Override + public void onFailure(Call call, Throwable t) { + Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_LONG).show(); + + } + }); + + + + } + } + + public void onAddPrescription(View view) { + upload_frame.setVisibility(View.VISIBLE); + view.setVisibility(View.GONE); + } + + public void onCancelClicked(View view) { + upload_frame.setVisibility(View.GONE); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/ProductActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductActivity.java similarity index 80% rename from app/src/main/java/com/quintus/labs/drugstore/activity/ProductActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductActivity.java index 68b56ff..9c3e3cf 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/ProductActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.annotation.SuppressLint; import android.content.Intent; @@ -21,18 +21,19 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.model.Category; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.ProductAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.helper.Converter; -import com.quintus.labs.drugstore.helper.Data; -import com.quintus.labs.drugstore.model.Category; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.ProductAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.helper.Converter; +import com.frontendsource.drugstore.helper.Data; + +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -51,18 +52,17 @@ public class ProductActivity extends BaseActivity { private static int cart_count = 0; Data data; - String Tag = "List"; + String Tag=""; View progress; LocalStorage localStorage; Gson gson = new Gson(); User user; Token token; - String categoryName; - Category category; + String categoryName,category_id; List productList = new ArrayList<>(); ProductAdapter mAdapter; private RecyclerView recyclerView; - + Category category; @SuppressLint("ResourceAsColor") @Override protected void onCreate(Bundle savedInstanceState) { @@ -82,8 +82,10 @@ protected void onCreate(Bundle savedInstanceState) { user = gson.fromJson(localStorage.getUserLogin(), User.class); token = new Token(user.getToken()); Intent intent = getIntent(); - categoryName = intent.getStringExtra("category"); - category = new Category(categoryName, user.getToken()); + categoryName = intent.getStringExtra("title"); + Tag = intent.getStringExtra("category"); + category_id = intent.getStringExtra("category_id"); + category = new Category(user.getToken(),category_id); cart_count = cartCount(); @@ -97,7 +99,12 @@ protected void onCreate(Bundle savedInstanceState) { private void getCategoryProduct() { showProgressDialog(); - Call call = RestClient.getRestService(getApplicationContext()).getCategoryProduct(category); + Call call; + if(Tag.equalsIgnoreCase("category")){ + call = RestClient.getRestService(getApplicationContext()).getCategoryProduct(category); + }else{ + call = RestClient.getRestService(getApplicationContext()).getSubCategoryProduct(category); + } call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -105,7 +112,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { productList = productResult.getProductList(); setUpRecyclerView(); @@ -161,7 +168,7 @@ private void changeActionBarTitle(ActionBar actionBar) { private void setUpRecyclerView() { - mAdapter = new ProductAdapter(productList, ProductActivity.this, Tag); + mAdapter = new ProductAdapter(productList, ProductActivity.this); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); @@ -169,25 +176,8 @@ private void setUpRecyclerView() { } - private void setUpGridRecyclerView() { - mAdapter = new ProductAdapter(productList, ProductActivity.this, Tag); - RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), 2); - recyclerView.setLayoutManager(mLayoutManager); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setAdapter(mAdapter); - - } - public void onToggleClicked(View view) { - if (Tag.equalsIgnoreCase("List")) { - Tag = "Grid"; - setUpGridRecyclerView(); - } else { - Tag = "List"; - setUpRecyclerView(); - } - } @Override diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/ProductViewActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductViewActivity.java similarity index 77% rename from app/src/main/java/com/quintus/labs/drugstore/activity/ProductViewActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductViewActivity.java index 10208ad..2708e11 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/ProductViewActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/ProductViewActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.content.Intent; import android.graphics.Color; @@ -6,7 +6,9 @@ import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.Bundle; +import android.text.Html; import android.util.Log; import android.view.Gravity; import android.view.Menu; @@ -19,14 +21,21 @@ import android.widget.TextView; import androidx.appcompat.app.ActionBar; - -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.helper.Converter; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.util.Utils; +import androidx.core.content.ContextCompat; +import androidx.viewpager.widget.ViewPager; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.ProductImageSliderAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.helper.Converter; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.ProductImage; +import com.frontendsource.drugstore.util.Utils; +import com.google.gson.reflect.TypeToken; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -41,13 +50,17 @@ public class ProductViewActivity extends BaseActivity { public TextView quantity, inc, dec; String _id, _title, _image, _description, _price, _currency, _discount, _attribute; TextView id, title, description, price, org_price, currency, discount, attribute; - ImageView imageView; ProgressBar progressBar; LinearLayout addToCart, share; RelativeLayout quantityLL; List cartList = new ArrayList<>(); int cartId; Cart cart; + ViewPager viewPager; + LinearLayout sliderDotspanel; + ListproductImages=new ArrayList<>(); + private int dotscount; + private ImageView[] dots; @Override protected void onCreate(Bundle savedInstanceState) { @@ -82,7 +95,6 @@ protected void onCreate(Bundle savedInstanceState) { org_price = findViewById(R.id.apv_org_price); attribute = findViewById(R.id.apv_attribute); discount = findViewById(R.id.apv_discount); - imageView = findViewById(R.id.apv_image); progressBar = findViewById(R.id.progressbar); addToCart = findViewById(R.id.add_to_cart_ll); share = findViewById(R.id.apv_share); @@ -90,10 +102,26 @@ protected void onCreate(Bundle savedInstanceState) { quantity = findViewById(R.id.quantity); inc = findViewById(R.id.quantity_plus); dec = findViewById(R.id.quantity_minus); + viewPager = findViewById(R.id.viewPager); + sliderDotspanel = findViewById(R.id.SliderDots); + if(_image!=null){ + Type type = new TypeToken>(){}.getType(); + productImages = gson.fromJson(_image, type); + + setupBannerSlider(); + } cartList = getCartList(); title.setText(_title); - description.setText(_description); + + if (_description != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + description.setText(Html.fromHtml(_description, Html.FROM_HTML_MODE_COMPACT)); + } else { + description.setText(Html.fromHtml(_description)); + } + } + if (_discount != "" && _discount.length() > 0) { price.setText(_discount); org_price.setText(_price); @@ -122,19 +150,6 @@ protected void onCreate(Bundle savedInstanceState) { } else { discount.setVisibility(View.GONE); } - if (_image != null) { - Picasso.get().load(Utils.ProductImage + _image).error(R.drawable.no_image).into(imageView, new Callback() { - @Override - public void onSuccess() { - progressBar.setVisibility(View.GONE); - } - - @Override - public void onError(Exception e) { - progressBar.setVisibility(View.GONE); - } - }); - } if (!cartList.isEmpty()) { for (int i = 0; i < cartList.size(); i++) { @@ -296,4 +311,54 @@ public void onRemoveProduct() { } + + private void setupBannerSlider() { + + ProductImageSliderAdapter viewPagerAdapter = new ProductImageSliderAdapter(this, productImages); + + viewPager.setAdapter(viewPagerAdapter); + + dotscount = viewPagerAdapter.getCount(); + dots = new ImageView[dotscount]; + + + for (int i = 0; i < dotscount; i++) { + + dots[i] = new ImageView(getApplicationContext()); + dots[i].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.non_active_dot)); + + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + + params.setMargins(8, 0, 8, 0); + + sliderDotspanel.addView(dots[i], params); + + } + + dots[0].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.active_dot)); + + viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + + for (int i = 0; i < dotscount; i++) { + dots[i].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.non_active_dot)); + } + + dots[position].setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.active_dot)); + + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + } diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SplashScreen.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SplashScreen.java new file mode 100644 index 0000000..b2f0d41 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SplashScreen.java @@ -0,0 +1,58 @@ +package com.frontendsource.drugstore.activity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.google.gson.Gson; + +public class SplashScreen extends AppCompatActivity { + Gson gson = new Gson(); + LocalStorage localStorage; + User user; + @Override + protected void onCreate(Bundle savedInstanceState) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + + super.onCreate(savedInstanceState); + getSupportActionBar().hide(); + setContentView(R.layout.activity_splash_screen); + localStorage = new LocalStorage(getApplicationContext()); + String userString = localStorage.getUserLogin(); + user = gson.fromJson(userString,User.class); + + + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + // This method will be executed once the timer is over + if(user==null){ + Intent i = new Intent(getApplicationContext(), WelcomeActivity.class); + startActivity(i); + finish(); + overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); + }else if(user!=null && user.getVerified()!=null && user.getVerified().equalsIgnoreCase("1")){ + Intent i = new Intent(getApplicationContext(), MainActivity.class); + startActivity(i); + finish(); + overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); + }else{ + Intent i = new Intent(getApplicationContext(), LoginRegisterActivity.class); + startActivity(i); + finish(); + overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); + } + + + } + + + }, 3000); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/SuccessActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SuccessActivity.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/activity/SuccessActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SuccessActivity.java index 15c1eb6..869f5f7 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/SuccessActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/SuccessActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import androidx.appcompat.app.AppCompatActivity; @@ -13,7 +13,7 @@ import android.view.WindowManager; import android.widget.ImageView; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; public class SuccessActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/WelcomeActivity.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/WelcomeActivity.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/activity/WelcomeActivity.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/WelcomeActivity.java index ac4b822..f965141 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/WelcomeActivity.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/activity/WelcomeActivity.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.activity; +package com.frontendsource.drugstore.activity; import android.app.Notification; import android.app.NotificationChannel; @@ -19,9 +19,9 @@ import androidx.core.content.ContextCompat; import androidx.viewpager.widget.ViewPager; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.ViewPagerAdapter; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.ViewPagerAdapter; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.Timer; import java.util.TimerTask; diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/BillAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/BillAdapter.java new file mode 100644 index 0000000..a38138b --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/BillAdapter.java @@ -0,0 +1,124 @@ +package com.frontendsource.drugstore.adapter; + +import android.app.Activity; +import android.app.Dialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Bill; +import com.frontendsource.drugstore.model.Prescription; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.squareup.picasso.Picasso; + +import java.util.List; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class BillAdapter extends RecyclerView.Adapter { + + List billList; + Activity context; + + LocalStorage localStorage; + + public BillAdapter( List billList, Activity context) { + this.billList = billList; + this.context = context; + } + + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { + View itemView; + + + itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.row_bill, parent, false); + + return new MyViewHolder(itemView); + + + } + + @Override + public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { + + final Bill bill = billList.get(position); + + Picasso.get().load(RestClient.BASE_URL+bill.getBill()).into(holder.imageView); + holder.prescription_title.setText(bill.getTitle()); + holder.name.setText(bill.getName()); + holder.email.setText(bill.getEmail()); + holder.mobile.setText(bill.getMobile()); + holder.amount.setText("Amount: "+bill.getAmount()); + holder.status.setText("status: "+bill.getPayment_status()); + holder.date.setText("Upload Date: "+bill.getCreated_date()); + if(bill.getPayment_status().equalsIgnoreCase("paid")){ + holder.view_receipt.setVisibility(View.VISIBLE); + }else{ + holder.view_receipt.setVisibility(View.GONE); + } + holder.imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Dialog dialog=new Dialog(context,R.style.full_screen_dialog); + dialog.setContentView(R.layout.product_image); + ImageView imageView1 = dialog.findViewById(R.id.image_popup); + Picasso.get().load(RestClient.BASE_URL+bill.getBill()).into(imageView1); + dialog.show(); + } + }); + holder.view_receipt.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Dialog dialog=new Dialog(context,R.style.full_screen_dialog); + dialog.setContentView(R.layout.product_image); + ImageView imageView1 = dialog.findViewById(R.id.image_popup); + Picasso.get().load(RestClient.BASE_URL+bill.getReceipt()).into(imageView1); + dialog.show(); + } + }); + + } + + + @Override + public int getItemCount() { + + return billList.size(); + } + + + public class MyViewHolder extends RecyclerView.ViewHolder { + TextView prescription_title,name,email,mobile,amount,date,view_receipt,status; + ImageView imageView; + public MyViewHolder(@NonNull View itemView) { + super(itemView); + + prescription_title = itemView.findViewById(R.id.prescription_title); + name = itemView.findViewById(R.id.name); + email = itemView.findViewById(R.id.email); + mobile = itemView.findViewById(R.id.mobile); + status = itemView.findViewById(R.id.status); + date = itemView.findViewById(R.id.date_time); + amount = itemView.findViewById(R.id.amount); + view_receipt = itemView.findViewById(R.id.view_receipt); + imageView = itemView.findViewById(R.id.imageView); + + + } + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/CartAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CartAdapter.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/CartAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CartAdapter.java index 56d0ddd..a4ca153 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/CartAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CartAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.util.Log; @@ -14,12 +14,13 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.api.clients.RestClient; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.CartActivity; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.CartActivity; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -76,7 +77,7 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit holder.subTotal.setText(_subtotal); Log.d("Cart Image==>", cart.getImage()); Picasso.get() - .load(Utils.ProductImage + cart.getImage()) + .load(RestClient.BASE_URL + cart.getImage()) .into(holder.imageView, new Callback() { @Override public void onSuccess() { diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CategoryAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CategoryAdapter.java new file mode 100644 index 0000000..40e2a8b --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CategoryAdapter.java @@ -0,0 +1,122 @@ +package com.frontendsource.drugstore.adapter; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.ProductActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.interfaces.CategorySelectCallBacks; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.util.Utils; +import com.squareup.picasso.Callback; +import com.squareup.picasso.Picasso; + +import java.util.List; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class CategoryAdapter extends RecyclerView.Adapter { + + List categoryList; + Activity context; + int selectedPosition = 0; + CategorySelectCallBacks callBacks; + + public CategoryAdapter(List categoryList, Activity context, CategorySelectCallBacks callBacks ) { + this.categoryList = categoryList; + this.context = context; + this.callBacks = callBacks; + } + + + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { + View itemView; + + itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.row_category, parent, false); + + return new MyViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) { + + final Category category = categoryList.get(position); + holder.title.setText(category.getCategory()); + + if(category.getCateimg()!=null){ + Picasso.get() + .load(RestClient.BASE_URL+ category.getCateimg()) + .into(holder.imageView); + } + + holder.ll.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + selectedPosition = position; + callBacks.onCategorySelect(position); + notifyDataSetChanged(); + } + }); + + if(selectedPosition == position){ + holder.ll.setBackgroundColor(Color.parseColor("#FFFFFF")); + }else{ + holder.ll.setBackgroundColor(Color.parseColor("#F2F2F2")); + } + holder.title.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(context, ProductActivity.class); + intent.putExtra("category", "category"); + intent.putExtra("title", category.getCategory()); + intent.putExtra("category_id", category.getId()); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + context.startActivity(intent); + } + }); + + } + + @Override + public int getItemCount() { + return categoryList.size(); + + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + ImageView imageView; + TextView title; + LinearLayout ll; + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + + imageView = itemView.findViewById(R.id.category_image); + title = itemView.findViewById(R.id.category_title); + ll = itemView.findViewById(R.id.category_item_ll); + } + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/CheckoutCartAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CheckoutCartAdapter.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/CheckoutCartAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CheckoutCartAdapter.java index 6437426..84e2af1 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/CheckoutCartAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/CheckoutCartAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.util.Log; @@ -14,11 +14,12 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.api.clients.RestClient; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -78,7 +79,7 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit holder.currency.setText(cart.getCurrency()); holder.subTotal.setText(_subtotal); Picasso.get() - .load(Utils.ProductImage + cart.getImage()) + .load(RestClient.BASE_URL + cart.getImage()) .into(holder.imageView, new Callback() { @Override public void onSuccess() { diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/CategoryAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeCategoryAdapter.java similarity index 72% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/CategoryAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeCategoryAdapter.java index 2bae824..fe58cdc 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/CategoryAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeCategoryAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.content.Intent; @@ -14,10 +14,11 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.ProductActivity; -import com.quintus.labs.drugstore.model.Category; -import com.quintus.labs.drugstore.util.Utils; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.ProductActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.util.Utils; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -29,18 +30,18 @@ * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com */ -public class CategoryAdapter extends RecyclerView.Adapter { +public class HomeCategoryAdapter extends RecyclerView.Adapter { List categoryList; Context context; String Tag; - public CategoryAdapter(List categoryList, Context context) { + public HomeCategoryAdapter(List categoryList, Context context) { this.categoryList = categoryList; this.context = context; } - public CategoryAdapter(List categoryList, Context context, String tag) { + public HomeCategoryAdapter(List categoryList, Context context, String tag) { this.categoryList = categoryList; this.context = context; Tag = tag; @@ -50,13 +51,10 @@ public CategoryAdapter(List categoryList, Context context, String tag) @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { View itemView; - if (Tag.equalsIgnoreCase("Home")) { + itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.row_home_category, parent, false); - } else { - itemView = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.row_category, parent, false); - } + return new MyViewHolder(itemView); @@ -66,7 +64,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) { final Category category = categoryList.get(position); - holder.title.setText(category.getCategry()); + holder.title.setText(category.getCategory()); Log.d("Category Image ==>", category.getCateimg()); if (Tag.equalsIgnoreCase("Category")) { @@ -84,24 +82,16 @@ public void onError(Exception e) { } }); }else if(category.getCateimg()!=null){ - Picasso.get().load(Utils.CategoryImage + category.getCateimg()).into(holder.imageView); + Picasso.get().load(RestClient.BASE_URL + category.getCateimg()).into(holder.imageView); } - holder.cardView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(context, ProductActivity.class); - intent.putExtra("category", category.getCategry()); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - context.startActivity(intent); - } - }); - holder.title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(context, ProductActivity.class); - intent.putExtra("category", category.getCategry()); + intent.putExtra("category", "category"); + intent.putExtra("title", category.getCategory()); + intent.putExtra("category_id", category.getId()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(intent); } diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/HomeSliderAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeSliderAdapter.java similarity index 68% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/HomeSliderAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeSliderAdapter.java index f6c3c25..fcd8419 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/HomeSliderAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/HomeSliderAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.view.LayoutInflater; @@ -9,10 +9,17 @@ import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; -import com.quintus.labs.drugstore.R; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Banner; +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; +import java.util.List; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com @@ -21,20 +28,20 @@ public class HomeSliderAdapter extends PagerAdapter { private Context context; private LayoutInflater layoutInflater; - private Integer[] images; + private ListbannerList = new ArrayList<>(); public HomeSliderAdapter(Context context) { this.context = context; } - public HomeSliderAdapter(Context context, Integer[] images) { + public HomeSliderAdapter(Context context, ListbannerList) { this.context = context; - this.images = images; + this.bannerList = bannerList; } @Override public int getCount() { - return images.length; + return bannerList.size(); } @Override @@ -48,7 +55,9 @@ public Object instantiateItem(ViewGroup container, final int position) { layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = layoutInflater.inflate(R.layout.item_home_slider, null); ImageView imageView = view.findViewById(R.id.imageView); - imageView.setImageResource(images[position]); + if(bannerList.get(position).getImage()!=null){ + Picasso.get().load(RestClient.BASE_URL+bannerList.get(position).getImage()).into(imageView); + } ViewPager vp = (ViewPager) container; diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/NewProductAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/NewProductAdapter.java similarity index 89% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/NewProductAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/NewProductAdapter.java index 39966a8..74e7490 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/NewProductAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/NewProductAdapter.java @@ -1,5 +1,6 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.graphics.Paint; @@ -16,23 +17,24 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.api.clients.RestClient; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.BaseActivity; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.activity.ProductViewActivity; -import com.quintus.labs.drugstore.interfaces.AddorRemoveCallbacks; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.BaseActivity; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.activity.ProductViewActivity; +import com.frontendsource.drugstore.interfaces.AddorRemoveCallbacks; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import java.util.ArrayList; import java.util.List; -import static com.quintus.labs.drugstore.activity.BaseActivity.TAG; +import static com.frontendsource.drugstore.activity.BaseActivity.TAG; /** * Drug App @@ -78,7 +80,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { } @Override - public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { + public void onBindViewHolder(@NonNull final MyViewHolder holder, @SuppressLint("RecyclerView") final int position) { final Product product = productList.get(position); localStorage = new LocalStorage(context); @@ -98,8 +100,7 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit } holder.currency.setText(product.getCurrency()); holder.attribute.setText(product.getAttribute()); - Log.d(TAG, Utils.ProductImage + product.getImage()); - Picasso.get().load(Utils.ProductImage + product.getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { + Picasso.get().load(RestClient.BASE_URL + product.getImages().get(0).getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { @Override public void onSuccess() { holder.progressBar.setVisibility(View.GONE); @@ -138,7 +139,7 @@ public void onClick(View v) { _subtotal = String.valueOf(Double.parseDouble(_price) * Integer.parseInt(_quantity)); if (context instanceof MainActivity) { - Cart cart = new Cart(product.getId(), product.getName(), product.getImage(), product.getCurrency(), _price, _attribute, _quantity, _subtotal); + Cart cart = new Cart(product.getId(), product.getName(), product.getImages().get(0).getImage(), product.getCurrency(), _price, _attribute, _quantity, _subtotal); cartList = ((BaseActivity) context).getCartList(); cartList.add(cart); @@ -211,7 +212,7 @@ public void onClick(View view) { Intent intent = new Intent(context, ProductViewActivity.class); intent.putExtra("id", product.getId()); intent.putExtra("title", product.getName()); - intent.putExtra("image", product.getImage()); + intent.putExtra("image", gson.toJson(product.getImages())); intent.putExtra("price", product.getPrice()); intent.putExtra("currency", product.getCurrency()); intent.putExtra("attribute", product.getAttribute()); diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/OfferAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OfferAdapter.java similarity index 86% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/OfferAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OfferAdapter.java index 203ee5a..ea4f585 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/OfferAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OfferAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.view.LayoutInflater; @@ -10,15 +10,17 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.model.Offer; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Offer; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import java.util.List; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com @@ -56,7 +58,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) { Offer offer = offerList.get(position); - Picasso.get().load(offer.getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { + Picasso.get().load(RestClient.BASE_URL +offer.getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { @Override public void onSuccess() { holder.progressBar.setVisibility(View.GONE); diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/OrderAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderAdapter.java similarity index 79% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/OrderAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderAdapter.java index 15a1469..44cf238 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/OrderAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.app.Dialog; import android.content.Context; @@ -16,13 +16,13 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.Order; -import com.quintus.labs.drugstore.model.OrderItem; -import com.quintus.labs.drugstore.model.OrdersResult; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.model.OrderItem; +import com.frontendsource.drugstore.model.OrdersResult; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -31,7 +31,7 @@ import retrofit2.Callback; import retrofit2.Response; -import static com.quintus.labs.drugstore.activity.BaseActivity.TAG; +import static com.frontendsource.drugstore.activity.BaseActivity.TAG; /** * Drug App @@ -111,12 +111,18 @@ private void openOrderItemModal(Order order) { call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - orderItemList = response.body().getOrderItemList(); - orderItemAdapter = new OrderItemAdapter(orderItemList, context); - RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context); - recyclerView.setLayoutManager(mLayoutManager); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setAdapter(orderItemAdapter); + if(response!=null && response.body()!=null){ + if(response.body().getCode()==200){ + orderItemList = response.body().getOrderItemList(); + orderItemAdapter = new OrderItemAdapter(orderItemList, context); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context); + recyclerView.setLayoutManager(mLayoutManager); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setAdapter(orderItemAdapter); + } + + } + } diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/OrderItemAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderItemAdapter.java similarity index 75% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/OrderItemAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderItemAdapter.java index 55a9337..cab41e1 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/OrderItemAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/OrderItemAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.annotation.SuppressLint; import android.content.Context; @@ -12,9 +12,10 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.model.OrderItem; -import com.quintus.labs.drugstore.util.Utils; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.OrderItem; +import com.frontendsource.drugstore.util.Utils; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -39,7 +40,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { .inflate(R.layout.orderdetails_item, parent, false); - return new OrderItemAdapter.MyViewHolder(itemView); + return new MyViewHolder(itemView); } @@ -47,15 +48,15 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { @SuppressLint("SetTextI18n") @Override - public void onBindViewHolder(@NonNull final OrderItemAdapter.MyViewHolder holder, final int position) { + public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { final OrderItem order = orderItemList.get(position); - holder.order_id.setText("#" + order.getOrderid()); - holder.order_title.setText(order.getItemname() + "(" + order.getAttribute() + ")"); - holder.order_quantity.setText(order.getItemquantity()); - holder.order_unitprice.setText(order.getCurrency() + order.getItemprice()); - holder.total_price.setText(order.getItemquantity() + "X" + order.getItemprice() + "=" + order.getItemtotal()); + holder.order_id.setText("#" + order.getOrder_id()); + holder.order_title.setText(order.getItemName() + "(" + order.getAttribute() + ")"); + holder.order_quantity.setText(order.getItemQuantity()); + holder.order_unitprice.setText(order.getCurrency() + order.getItemPrice()); + holder.total_price.setText(order.getItemQuantity() + "X" + order.getItemPrice() + "=" + order.getItemTotal()); Picasso.get() - .load(Utils.ProductImage + order.getitemImage()) + .load(RestClient.BASE_URL + order.getitemImage()) .into(holder.order_image, new Callback() { @Override public void onSuccess() { diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/PopularProductAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PopularProductAdapter.java similarity index 89% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/PopularProductAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PopularProductAdapter.java index 087d883..dabe86d 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/PopularProductAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PopularProductAdapter.java @@ -1,5 +1,6 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.graphics.Paint; @@ -16,16 +17,17 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.api.clients.RestClient; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.BaseActivity; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.activity.ProductViewActivity; -import com.quintus.labs.drugstore.interfaces.AddorRemoveCallbacks; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.BaseActivity; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.activity.ProductViewActivity; +import com.frontendsource.drugstore.interfaces.AddorRemoveCallbacks; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -76,7 +78,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { } @Override - public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { + public void onBindViewHolder(@NonNull final MyViewHolder holder, @SuppressLint("RecyclerView") final int position) { final Product product = productList.get(position); localStorage = new LocalStorage(context); @@ -94,7 +96,7 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit holder.org_price.setVisibility(View.GONE); } holder.attribute.setText(product.getAttribute()); - Picasso.get().load(Utils.ProductImage + product.getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { + Picasso.get().load(RestClient.BASE_URL + product.getImages().get(0).getImage()).error(R.drawable.no_image).into(holder.imageView, new Callback() { @Override public void onSuccess() { holder.progressBar.setVisibility(View.GONE); @@ -135,7 +137,7 @@ public void onClick(View v) { _subtotal = String.valueOf(Double.parseDouble(_price) * Integer.parseInt(_quantity)); if (context instanceof MainActivity) { - Cart cart = new Cart(product.getId(), product.getName(), product.getImage(), product.getCurrency(), _price, _attribute, _quantity, _subtotal); + Cart cart = new Cart(product.getId(), product.getName(), RestClient.BASE_URL + product.getImages().get(0).getImage(), product.getCurrency(), _price, _attribute, _quantity, _subtotal); cartList = ((BaseActivity) context).getCartList(); cartList.add(cart); @@ -206,7 +208,7 @@ public void onClick(View view) { Intent intent = new Intent(context, ProductViewActivity.class); intent.putExtra("id", product.getId()); intent.putExtra("title", product.getName()); - intent.putExtra("image", product.getImage()); + intent.putExtra("image", gson.toJson(product.getImages())); intent.putExtra("price", product.getPrice()); intent.putExtra("currency", product.getCurrency()); intent.putExtra("attribute", product.getAttribute()); diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PrescriptionAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PrescriptionAdapter.java new file mode 100644 index 0000000..50d2363 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PrescriptionAdapter.java @@ -0,0 +1,113 @@ +package com.frontendsource.drugstore.adapter; + +import static com.frontendsource.drugstore.activity.BaseActivity.TAG; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.model.OrderItem; +import com.frontendsource.drugstore.model.OrdersResult; +import com.frontendsource.drugstore.model.Prescription; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.google.gson.Gson; +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class PrescriptionAdapter extends RecyclerView.Adapter { + + List prescriptionList; + Activity context; + + LocalStorage localStorage; + + public PrescriptionAdapter(List prescriptionList, Activity context) { + this.prescriptionList = prescriptionList; + this.context = context; + } + + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { + View itemView; + + + itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.row_prescription, parent, false); + + return new MyViewHolder(itemView); + + + } + + @Override + public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) { + + final Prescription prescription = prescriptionList.get(position); + + Picasso.get().load(RestClient.BASE_URL+prescription.getImage()).into(holder.imageView); + holder.prescription_title.setText(prescription.getTitle()); + holder.imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Dialog dialog=new Dialog(context,R.style.full_screen_dialog); + dialog.setContentView(R.layout.product_image); + ImageView imageView1 = dialog.findViewById(R.id.image_popup); + Picasso.get().load(RestClient.BASE_URL+prescription.getImage()).into(imageView1); + dialog.show(); + } + }); + + } + + + @Override + public int getItemCount() { + + return prescriptionList.size(); + } + + + public class MyViewHolder extends RecyclerView.ViewHolder { + TextView prescription_title; + ImageView imageView; + public MyViewHolder(@NonNull View itemView) { + super(itemView); + + prescription_title = itemView.findViewById(R.id.prescription_title); + imageView = itemView.findViewById(R.id.imageView); + + + } + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/ProductAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductAdapter.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/ProductAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductAdapter.java index 80436e8..0bd2de6 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/ProductAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.content.Intent; @@ -17,15 +17,16 @@ import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.api.clients.RestClient; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.BaseActivity; -import com.quintus.labs.drugstore.activity.ProductViewActivity; -import com.quintus.labs.drugstore.interfaces.AddorRemoveCallbacks; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.BaseActivity; +import com.frontendsource.drugstore.activity.ProductViewActivity; +import com.frontendsource.drugstore.interfaces.AddorRemoveCallbacks; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -111,7 +112,7 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit } Picasso.get() - .load(Utils.ProductImage + product.getImage()) + .load(RestClient.BASE_URL + product.getImages().get(0).getImage()) .into(holder.imageView, new Callback() { @Override public void onSuccess() { @@ -174,7 +175,7 @@ public void onClick(View v) { if (cartList.size() == 0 || pQuantity == 0) { - Cart cart = new Cart(product.getId(), product.getName(), product.getImage(), product.getCurrency(), _price, product.getAttribute(), total_item + "", _subtotal); + Cart cart = new Cart(product.getId(), product.getName(), RestClient.BASE_URL + product.getImages().get(0).getImage(), product.getCurrency(), _price, product.getAttribute(), total_item + "", _subtotal); cartList = ((BaseActivity) context).getCartList(); cartList.add(cart); String cartStr = gson.toJson(cartList); @@ -320,7 +321,7 @@ public void onClick(View view) { Intent intent = new Intent(context, ProductViewActivity.class); intent.putExtra("id", product.getId()); intent.putExtra("title", product.getName()); - intent.putExtra("image", product.getImage()); + intent.putExtra("image", gson.toJson(product.getImages())); intent.putExtra("price", product.getPrice()); intent.putExtra("currency", product.getCurrency()); intent.putExtra("attribute", product.getAttribute()); diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductImageSliderAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductImageSliderAdapter.java new file mode 100644 index 0000000..05e524e --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ProductImageSliderAdapter.java @@ -0,0 +1,89 @@ +package com.frontendsource.drugstore.adapter; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.ProductImage; +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; +import java.util.List; + + +/** + * Grocery App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class ProductImageSliderAdapter extends PagerAdapter { + + private Activity context; + private LayoutInflater layoutInflater; + private List productImageList = new ArrayList<>(); + + public ProductImageSliderAdapter(Activity context) { + this.context = context; + } + + public ProductImageSliderAdapter(Activity context, List productImageList) { + this.context = context; + this.productImageList = productImageList; + } + + @Override + public int getCount() { + return productImageList.size(); + } + + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + @Override + public Object instantiateItem(ViewGroup container, final int position) { + + layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = layoutInflater.inflate(R.layout.item_product_image_slider, null); + ImageView imageView = view.findViewById(R.id.imageView); + Picasso.get().load(RestClient.BASE_URL+productImageList.get(position).getImage()).into(imageView); + + imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Dialog dialog=new Dialog(context,R.style.full_screen_dialog); + dialog.setContentView(R.layout.product_image); + ImageView imageView1 = dialog.findViewById(R.id.image_popup); + Picasso.get().load(RestClient.BASE_URL+productImageList.get(position).getImage()).into(imageView1); + dialog.show(); + + } + }); + + ViewPager vp = (ViewPager) container; + vp.addView(view, 0); + return view; + + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + + ViewPager vp = (ViewPager) container; + View view = (View) object; + vp.removeView(view); + + } +} \ No newline at end of file diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PromotionSliderAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PromotionSliderAdapter.java new file mode 100644 index 0000000..ab04eb1 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/PromotionSliderAdapter.java @@ -0,0 +1,79 @@ +package com.frontendsource.drugstore.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Offer; + +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; +import java.util.List; + +/** + * Grocery App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class PromotionSliderAdapter extends PagerAdapter { + + private Context context; + private LayoutInflater layoutInflater; + ListofferList = new ArrayList<>(); + + + public PromotionSliderAdapter(Context context) { + this.context = context; + } + + public PromotionSliderAdapter(Context context, ListofferList) { + this.context = context; + this.offerList = offerList; + } + + @Override + public int getCount() { + return offerList.size(); + } + + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + @Override + public Object instantiateItem(ViewGroup container, final int position) { + + layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = layoutInflater.inflate(R.layout.item_promotion_slider, null); + ImageView imageView = view.findViewById(R.id.imageView); + Offer offer = offerList.get(position); + if(offer.getImage()!=null){ + Picasso.get().load(RestClient.BASE_URL+offer.getImage()).into(imageView); + } + + + ViewPager vp = (ViewPager) container; + vp.addView(view, 0); + return view; + + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + + ViewPager vp = (ViewPager) container; + View view = (View) object; + vp.removeView(view); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/SearchAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SearchAdapter.java similarity index 83% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/SearchAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SearchAdapter.java index ec9e501..74fa2fe 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/SearchAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SearchAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.content.Intent; @@ -12,10 +12,12 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.ProductViewActivity; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.util.Utils; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.ProductViewActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.util.Utils; +import com.google.gson.Gson; import com.squareup.picasso.Picasso; import java.util.List; @@ -30,7 +32,7 @@ public class SearchAdapter extends RecyclerView.Adapter productList; Context context; - + Gson gson = new Gson(); public SearchAdapter(List productList, Context context) { this.productList = productList; this.context = context; @@ -59,8 +61,8 @@ public void onBindViewHolder(@NonNull final MyViewHolder holder, final int posit holder.title.setText(product.getName()); - if (product.getImage() != null) { - Picasso.get().load(Utils.ProductImage + product.getImage()).into(holder.imageView); + if (product.getImages() != null) { + Picasso.get().load(RestClient.BASE_URL + product.getImages().get(0).getImage()).into(holder.imageView); } holder.row_ll.setOnClickListener(new View.OnClickListener() { @Override @@ -68,7 +70,7 @@ public void onClick(View view) { Intent intent = new Intent(context, ProductViewActivity.class); intent.putExtra("id", product.getId()); intent.putExtra("title", product.getName()); - intent.putExtra("image", product.getImage()); + intent.putExtra("image", gson.toJson(product.getImages())); intent.putExtra("price", product.getPrice()); intent.putExtra("currency", product.getCurrency()); intent.putExtra("attribute", product.getAttribute()); diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SubCategoryAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SubCategoryAdapter.java new file mode 100644 index 0000000..a92cf9e --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/SubCategoryAdapter.java @@ -0,0 +1,104 @@ +package com.frontendsource.drugstore.adapter; + +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.ProductActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.interfaces.CategorySelectCallBacks; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.model.SubCategory; +import com.squareup.picasso.Picasso; + +import java.util.List; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class SubCategoryAdapter extends RecyclerView.Adapter { + + List categoryList; + Activity context; + int selectedPosition = 0; + + public SubCategoryAdapter(List categoryList, Activity context ) { + this.categoryList = categoryList; + this.context = context; + } + + + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { + View itemView; + + itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.row_sub_category, parent, false); + + return new MyViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) { + + final SubCategory category = categoryList.get(position); + holder.title.setText(category.getSub_category_title()); + + if(category.getSub_category_img()!=null){ + Picasso.get() + .load(RestClient.BASE_URL+ category.getSub_category_img()) + .into(holder.imageView); + } + + + + + holder.ll.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(context, ProductActivity.class); + intent.putExtra("category", "subCategory"); + intent.putExtra("title", category.getSub_category_title()); + intent.putExtra("category_id", category.getId()); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + context.startActivity(intent); + } + }); + + } + + @Override + public int getItemCount() { + return categoryList.size(); + + } + + public class MyViewHolder extends RecyclerView.ViewHolder { + ImageView imageView; + TextView title; + LinearLayout ll; + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + + imageView = itemView.findViewById(R.id.category_image); + title = itemView.findViewById(R.id.category_title); + ll = itemView.findViewById(R.id.category_item_ll); + } + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/adapter/ViewPagerAdapter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ViewPagerAdapter.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/adapter/ViewPagerAdapter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ViewPagerAdapter.java index 468c070..b5fdca6 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/adapter/ViewPagerAdapter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/adapter/ViewPagerAdapter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.adapter; +package com.frontendsource.drugstore.adapter; import android.content.Context; import android.view.LayoutInflater; @@ -10,7 +10,7 @@ import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; /** * Drug App diff --git a/app/src/main/java/com/quintus/labs/drugstore/api/LoggingInterceptor.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/LoggingInterceptor.java similarity index 97% rename from app/src/main/java/com/quintus/labs/drugstore/api/LoggingInterceptor.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/LoggingInterceptor.java index 4ae1526..4f5c286 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/api/LoggingInterceptor.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/LoggingInterceptor.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.api; +package com.frontendsource.drugstore.api; import android.util.Log; diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/RestService.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/RestService.java new file mode 100644 index 0000000..ea58636 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/RestService.java @@ -0,0 +1,131 @@ +package com.frontendsource.drugstore.api; + + +import com.frontendsource.drugstore.model.BannerResult; +import com.frontendsource.drugstore.model.Bill; +import com.frontendsource.drugstore.model.BillResult; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.model.CategoryResult; +import com.frontendsource.drugstore.model.OfferResult; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.model.OrderItem; +import com.frontendsource.drugstore.model.OrdersResult; +import com.frontendsource.drugstore.model.PlaceOrder; +import com.frontendsource.drugstore.model.Prescription; +import com.frontendsource.drugstore.model.PrescriptionResult; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; + +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Multipart; +import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.Path; +import retrofit2.http.Query; + +/** + * RetrofitExample + * https://github.com/quintuslabs/RetrofitExample + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ + +public interface RestService { + + @POST("api/v1/register") + Call register(@Body User user); + + @POST("api/v1/login") + Call login(@Body User user); + + @POST("api/v1/forgot_password") + Call forgotPassword(@Body User user); + + @POST("api/v1/reset_password") + Call resetPassword(@Body User user); + + @POST("api/v1/resend_otp") + Call resendVerification(@Body User user); + + @POST("api/v1/verify_otp") + Call userActivate(@Body User user); + + @GET("api/v1/banners") + Call banners(); + + @GET("api/v1/offers") + Call offers(); + + @POST("api/v1/categories") + Call allCategory(@Body Token token); + + @POST("api/v1/newProducts") + Call newProducts(@Body Token token); + + @POST("api/v1/homepage") + Call popularProducts(@Body Token token); + + @POST("api/v1/category/products") + Call getCategoryProduct(@Body Category category); + + @POST("api/v1/sub-category/products") + Call getSubCategoryProduct(@Body Category category); + + @POST("api/v1/placeOrder") + Call confirmPlaceOrder(@Body PlaceOrder placeOrder); + + @Multipart + @POST("api/v1/uploadprescription/{id}") + Call uploadPrescription(@Path("id") String id , @Part MultipartBody.Part prescription); + + + @POST("api/v1//orderDetails") + Call orderDetails(@Body Token token); + + @POST("api/v1/update_user") + Call updateUser(@Body User user); + + @GET("api/v1/product/search") + Call searchProduct(@Query("s") String search); + + @POST("api/v1/singleOrderDetails") + Call getOrderItems(@Body OrderItem orderItem); + + @POST("api/v1/prescriptions") + Call getPrescription(@Body Token token); + + @Multipart + @POST("api/v1/upload_prescription") + Call uploadPrescription( + @Part("name") RequestBody name, + @Part("email") RequestBody email, + @Part("mobile") RequestBody mobile, + @Part("remark") RequestBody remark, + @Part("title") RequestBody title, + @Part MultipartBody.Part image, + @Part("token") RequestBody token + ); + + @POST("api/v1/bills") + Call getBills(@Body Token token); + + @Multipart + @POST("api/v1/upload_bills") + Call uploadBill( + @Part("name") RequestBody name, + @Part("email") RequestBody email, + @Part("mobile") RequestBody mobile, + @Part("amount") RequestBody amount, + @Part("title") RequestBody title, + @Part MultipartBody.Part bill, + @Part("token") RequestBody token + ); + + +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/api/ToStringConverterFactory.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/ToStringConverterFactory.java similarity index 97% rename from app/src/main/java/com/quintus/labs/drugstore/api/ToStringConverterFactory.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/ToStringConverterFactory.java index cddff57..6a98091 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/api/ToStringConverterFactory.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/ToStringConverterFactory.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.api; +package com.frontendsource.drugstore.api; /** * RetrofitExample diff --git a/app/src/main/java/com/quintus/labs/drugstore/api/clients/RestClient.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/clients/RestClient.java similarity index 84% rename from app/src/main/java/com/quintus/labs/drugstore/api/clients/RestClient.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/clients/RestClient.java index bbcda1c..8cc3709 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/api/clients/RestClient.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/api/clients/RestClient.java @@ -1,13 +1,13 @@ -package com.quintus.labs.drugstore.api.clients; +package com.frontendsource.drugstore.api.clients; import android.content.Context; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.quintus.labs.drugstore.api.LoggingInterceptor; -import com.quintus.labs.drugstore.api.RestService; -import com.quintus.labs.drugstore.api.ToStringConverterFactory; +import com.frontendsource.drugstore.api.LoggingInterceptor; +import com.frontendsource.drugstore.api.RestService; +import com.frontendsource.drugstore.api.ToStringConverterFactory; import java.util.concurrent.TimeUnit; @@ -25,8 +25,8 @@ public class RestClient { - public static final String BASE_URL = "http://megagrocerystore.000webhostapp.com/drugstore/"; -// public static final String BASE_URL = "http://192.168.1.103/drugstore/"; +// public static final String BASE_URL = "http://192.168.1.105/drugstore/"; + public static final String BASE_URL = "https://drugstore.frontendsourcecode.com/"; public static Retrofit RETROFIT = null; public static Retrofit RETROFIT1 = null; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonRegular.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonRegular.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonRegular.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonRegular.java index 0886c6f..483e2f0 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonRegular.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonRegular.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonSemiBold.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonSemiBold.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonSemiBold.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonSemiBold.java index b1f8f01..1a0dabf 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/ButtonSemiBold.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/ButtonSemiBold.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextMedium.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextMedium.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextMedium.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextMedium.java index f612837..8382be4 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextMedium.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextMedium.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextRegular.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextRegular.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextRegular.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextRegular.java index 67afcaf..db16441 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextRegular.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextRegular.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextThin.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextThin.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextThin.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextThin.java index 7b8b534..1c17dbf 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/EditTextThin.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/EditTextThin.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBlack.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBlack.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBlack.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBlack.java index 772aa28..d33fa97 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBlack.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBlack.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBold.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBold.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBold.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBold.java index b3262b7..612f089 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewBold.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewBold.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewMedium.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewMedium.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewMedium.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewMedium.java index b37547d..4480236 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewMedium.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewMedium.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewRegular.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewRegular.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewRegular.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewRegular.java index 1f728c0..c82a0ee 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewRegular.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewRegular.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewSemiBold.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewSemiBold.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewSemiBold.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewSemiBold.java index 9332135..1baa83a 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewSemiBold.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewSemiBold.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewThin.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewThin.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewThin.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewThin.java index 48ff40a..77d1637 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/TextViewThin.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/TextViewThin.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.annotation.SuppressLint; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/customfonts/VerticalTextView.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/VerticalTextView.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/customfonts/VerticalTextView.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/VerticalTextView.java index fb51038..1611084 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/customfonts/VerticalTextView.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/customfonts/VerticalTextView.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.customfonts; +package com.frontendsource.drugstore.customfonts; import android.content.Context; import android.graphics.Canvas; diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/AddressFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/AddressFragment.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/AddressFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/AddressFragment.java index 684ffc5..539617b 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/AddressFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/AddressFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.content.Context; @@ -19,12 +19,12 @@ import androidx.fragment.app.FragmentTransaction; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.model.UserResult; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import org.json.JSONArray; import org.json.JSONException; @@ -52,6 +52,7 @@ */ public class AddressFragment extends Fragment { + private static final String TAG = "AddressFragment==>"; Context context; TextView txt_pyment; Spinner citySpinner, stateSpinner; @@ -90,7 +91,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa Log.d("User String : ", userString); if (user != null) { - name.setText(user.getFname()); + name.setText(user.getName()); email.setText(user.getEmail()); mobile.setText(user.getMobile()); zip.setText(user.getZip()); @@ -161,7 +162,7 @@ public void onResponse(Call call, Response response) { if (response != null) { UserResult userResult = response.body(); - if (userResult.getCode() == 200) { + if (userResult!=null && userResult.getStatus() == 200) { user.setAddress(userAddress.getAddress()); user.setState(userAddress.getState()); user.setCity(userAddress.getCity()); @@ -185,7 +186,7 @@ public void onResponse(Call call, Response response) { @Override public void onFailure(Call call, Throwable t) { - + Log.d(TAG, "onFailure: "+t.getMessage()); } }); diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BillFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BillFragment.java new file mode 100644 index 0000000..b6e3924 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BillFragment.java @@ -0,0 +1,44 @@ +package com.frontendsource.drugstore.fragment; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.frontendsource.drugstore.R; +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ + +/** + * A simple {@link Fragment} subclass. + */ +public class BillFragment extends Fragment { + + + public BillFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_bill, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + //you can set the title for your toolbar here for different fragments different titles + getActivity().setTitle("Blank"); + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/BlankFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BlankFragment.java similarity index 92% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/BlankFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BlankFragment.java index d4e8ae0..f782ab5 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/BlankFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/BlankFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -9,7 +9,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; /** * Drug App * https://github.com/quintuslabs/GroceryStore diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/CategoryFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/CategoryFragment.java similarity index 55% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/CategoryFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/CategoryFragment.java index fe96f2d..3b4f825 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/CategoryFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/CategoryFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -11,18 +11,23 @@ import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.adapter.CategoryAdapter; +import com.frontendsource.drugstore.adapter.SubCategoryAdapter; +import com.frontendsource.drugstore.interfaces.CategorySelectCallBacks; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.model.SubCategory; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.CategoryAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.helper.Data; -import com.quintus.labs.drugstore.model.Category; -import com.quintus.labs.drugstore.model.CategoryResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.HomeCategoryAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.helper.Data; +import com.frontendsource.drugstore.model.CategoryResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -40,16 +45,18 @@ /** * A simple {@link Fragment} subclass. */ -public class CategoryFragment extends Fragment { +public class CategoryFragment extends Fragment implements CategorySelectCallBacks { Data data; View progress; LocalStorage localStorage; Gson gson = new Gson(); User user; Token token; - private List categoryList = new ArrayList<>(); - private RecyclerView recyclerView; + private List homeCategoryList = new ArrayList<>(); + private List subCategoryList = new ArrayList<>(); + private RecyclerView recyclerView,subCateRecyclerview; private CategoryAdapter mAdapter; + private SubCategoryAdapter sAdapter; public CategoryFragment() { // Required empty public constructor @@ -62,6 +69,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_category, container, false); recyclerView = view.findViewById(R.id.category_rv); + subCateRecyclerview = view.findViewById(R.id.sub_category_rv); progress = view.findViewById(R.id.progress_bar); localStorage = new LocalStorage(getContext()); @@ -86,10 +94,14 @@ public void onResponse(Call call, Response respo if (response != null) { CategoryResult categoryResult = response.body(); - if (categoryResult.getCode() == 200) { + if (categoryResult.getStatus() == 200) { - categoryList = categoryResult.getCategoryList(); + homeCategoryList = categoryResult.getCategoryList(); setupCategoryRecycleView(); + if(homeCategoryList.size()>0){ + subCategoryList = homeCategoryList.get(0).getSubCategory(); + setupSubCategoryRecycleView(); + } } @@ -107,9 +119,8 @@ public void onFailure(Call call, Throwable t) { } private void setupCategoryRecycleView() { - mAdapter = new CategoryAdapter(categoryList, getContext(), "Category"); - RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getContext(), 2); - recyclerView.setLayoutManager(mLayoutManager); + mAdapter = new CategoryAdapter(homeCategoryList, getActivity(), this); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(mAdapter); } @@ -130,4 +141,17 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { getActivity().setTitle("Category"); } + @Override + public void onCategorySelect(int position) { + subCategoryList = homeCategoryList.get(position).getSubCategory(); + setupSubCategoryRecycleView(); + } + + private void setupSubCategoryRecycleView() { + sAdapter = new SubCategoryAdapter(subCategoryList, getActivity()); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); + subCateRecyclerview.setLayoutManager(mLayoutManager); + subCateRecyclerview.setItemAnimator(new DefaultItemAnimator()); + subCateRecyclerview.setAdapter(sAdapter); + } } diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/ConfirmFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ConfirmFragment.java similarity index 84% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/ConfirmFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ConfirmFragment.java index 325057d..3e322a4 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/ConfirmFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ConfirmFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.app.Activity; @@ -32,21 +32,21 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.BaseActivity; -import com.quintus.labs.drugstore.activity.CartActivity; -import com.quintus.labs.drugstore.activity.SuccessActivity; -import com.quintus.labs.drugstore.adapter.CheckoutCartAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.Cart; -import com.quintus.labs.drugstore.model.Order; -import com.quintus.labs.drugstore.model.OrderItem; -import com.quintus.labs.drugstore.model.OrdersResult; -import com.quintus.labs.drugstore.model.PlaceOrder; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.FilePath; -import com.quintus.labs.drugstore.util.FileUtils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.BaseActivity; +import com.frontendsource.drugstore.activity.CartActivity; +import com.frontendsource.drugstore.activity.SuccessActivity; +import com.frontendsource.drugstore.adapter.CheckoutCartAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Cart; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.model.OrderItem; +import com.frontendsource.drugstore.model.OrdersResult; +import com.frontendsource.drugstore.model.PlaceOrder; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.FilePath; +import com.frontendsource.drugstore.util.FileUtils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.io.ByteArrayOutputStream; import java.io.File; @@ -56,9 +56,7 @@ import java.util.ArrayList; import java.util.List; -import info.isuru.sheriff.enums.SheriffPermission; -import info.isuru.sheriff.helper.Sheriff; -import info.isuru.sheriff.interfaces.PermissionListener; + import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; @@ -77,7 +75,7 @@ /** * A simple {@link Fragment} subclass. */ -public class ConfirmFragment extends Fragment implements PermissionListener { +public class ConfirmFragment extends Fragment { LocalStorage localStorage; List cartList = new ArrayList<>(); Gson gson; @@ -101,7 +99,6 @@ public class ConfirmFragment extends Fragment implements PermissionListener { private static final int EXTERNAL_STORAGE_PERMISSION_CONSTANT = 100; private static final int REQUEST_MULTIPLE_PERMISSION = 101; - private Sheriff sheriffPermission; File prescription; @@ -125,7 +122,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, uploadPrescription = view.findViewById(R.id.upload_card); arrangeCall = view.findViewById(R.id.arrange_call); notRequired = view.findViewById(R.id.not_required); - requestMultiplePermission(); progressDialog = new ProgressDialog(getContext()); gson = new Gson(); @@ -174,7 +170,7 @@ public void onClick(View v) { arrangeCall.setCardBackgroundColor(getContext().getResources().getColor(R.color.white)); prescription_type = "upload"; - onUploadClicked(); +// onUploadClicked(); } }); arrangeCall.setOnClickListener(new View.OnClickListener() { @@ -202,7 +198,7 @@ public void onClick(View v) { } private void onUploadClicked() { - final Dialog mDialog = new Dialog(getContext(),R.style.Theme_AppCompat_Dialog_Alert); + final Dialog mDialog = new Dialog(getContext()); mDialog.setCancelable(true); mDialog.setContentView(R.layout.choose_file_dialog); Window window = mDialog.getWindow(); @@ -229,7 +225,6 @@ public void onClick(View v) { WRITE_EXTERNAL_STORAGE); if (camerapermissionCheck != PackageManager.PERMISSION_GRANTED || writePermissionCheck != PackageManager.PERMISSION_GRANTED) { - requestMultiplePermission(); } else { mDialog.dismiss(); String[] mimeTypes = @@ -264,7 +259,6 @@ public void onClick(View v) { WRITE_EXTERNAL_STORAGE); if (camerapermissionCheck != PackageManager.PERMISSION_GRANTED || writePermissionCheck != PackageManager.PERMISSION_GRANTED) { - requestMultiplePermission(); } else { mDialog.dismiss(); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); @@ -282,7 +276,7 @@ private void placeUserOrder() { } - confirmOrder = new PlaceOrder(user.getToken(), user.getFname(), " ", user.getMobile(), user.getCity(), address, user.getId(),prescription_type, orderItemList); + confirmOrder = new PlaceOrder(user.getToken(), user.getName(), user.getMobile(),user.getEmail(), user.getCity(),user.getState(),user.getZip(), address, orderItemList); progressDialog.setMessage("Confirming Order..."); progressDialog.show(); Log.d("Confirm Order==>", gson.toJson(confirmOrder)); @@ -294,12 +288,19 @@ public void onResponse(Call call, Response response) OrdersResult ordersResult = response.body(); - if (ordersResult.getCode() == 200) { + if (ordersResult!=null && ordersResult.getCode() == 200) { localStorage.deleteCart(); - uploadDocumentFile(prescription,ordersResult.getOrder_id()); + + if(prescription!=null){ + uploadDocumentFile(prescription,ordersResult.getOrder_id()); + + }else{ + showCustomDialog(); + progressDialog.dismiss(); + } + } - progressDialog.dismiss(); } @Override @@ -387,34 +388,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { } - private void requestMultiplePermission() { - - sheriffPermission = Sheriff.Builder() - .with(this) - .requestCode(REQUEST_MULTIPLE_PERMISSION) - .setPermissionResultCallback(this) - .askFor(SheriffPermission.CAMERA, SheriffPermission.STORAGE) - .rationalMessage("These Permissions are required to work app with all functions.") - .build(); - sheriffPermission.requestPermissions(); - } - - public void onPermissionsGranted(int requestCode, ArrayList acceptedPermissionList) { - - } - - public void onPermissionsDenied(int requestCode, ArrayList deniedPermissionList) { - Toast.makeText(getContext(), "Permission Denied! Please allow permission to upload image", Toast.LENGTH_LONG).show(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (sheriffPermission != null) { - sheriffPermission.onRequestPermissionsResult(requestCode, permissions, grantResults); - } - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/ForgotPassword_Fragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ForgotPasswordFragment.java similarity index 88% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/ForgotPassword_Fragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ForgotPasswordFragment.java index dc4ce62..10b4205 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/ForgotPassword_Fragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ForgotPasswordFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.annotation.SuppressLint; import android.content.res.ColorStateList; @@ -12,17 +12,18 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; +import android.widget.Toast; import androidx.fragment.app.Fragment; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.LoginRegisterActivity; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.model.UserResult; -import com.quintus.labs.drugstore.util.CustomToast; -import com.quintus.labs.drugstore.util.NotificationHelper; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.LoginRegisterActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; +import com.frontendsource.drugstore.util.CustomToast; +import com.frontendsource.drugstore.util.NotificationHelper; import retrofit2.Call; import retrofit2.Callback; @@ -34,7 +35,7 @@ * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com */ -public class ForgotPassword_Fragment extends Fragment implements +public class ForgotPasswordFragment extends Fragment implements OnClickListener { private static View view; @@ -45,7 +46,7 @@ public class ForgotPassword_Fragment extends Fragment implements Gson gson = new Gson(); User user; - public ForgotPassword_Fragment() { + public ForgotPasswordFragment() { } @@ -155,7 +156,7 @@ public void onResponse(Call call, Response response) { Log.d("Response :=>", response.body() + ""); if (response != null) { UserResult userResult = response.body(); - if (userResult != null && userResult.getCode() == 200) { + if (userResult != null && userResult.getStatus() == 200) { new LoginRegisterActivity().replaceLoginFragment(); } else { new CustomToast().Show_Toast(getActivity(), view, @@ -201,10 +202,8 @@ public void onResponse(Call call, Response response) { Log.d("Response :=>", response.body() + ""); if (response != null) { UserResult userResult = response.body(); - if (userResult != null && userResult.getCode() == 200) { - String userString = gson.toJson(userResult.getUser()); - NotificationHelper notificationHelper = new NotificationHelper(getContext()); - notificationHelper.createNotification("Reset password Code", userResult.getUser().getReset_code()); + if (userResult != null && userResult.getStatus() == 200) { + Toast.makeText(getContext(),"OTP sent to your registerd mobile number : "+user.getMobile(),Toast.LENGTH_LONG).show(); reset_password_FL.setVisibility(View.VISIBLE); forgot_password_FL.setVisibility(View.GONE); } else { diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/HomeFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/HomeFragment.java similarity index 70% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/HomeFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/HomeFragment.java index 968be70..c1515a1 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/HomeFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/HomeFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.content.Intent; @@ -19,22 +19,26 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.adapter.HomeCategoryAdapter; +import com.frontendsource.drugstore.adapter.HomeSliderAdapter; +import com.frontendsource.drugstore.adapter.NewProductAdapter; +import com.frontendsource.drugstore.adapter.PopularProductAdapter; +import com.frontendsource.drugstore.adapter.PromotionSliderAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Banner; +import com.frontendsource.drugstore.model.BannerResult; +import com.frontendsource.drugstore.model.Category; +import com.frontendsource.drugstore.model.CategoryResult; +import com.frontendsource.drugstore.model.Offer; +import com.frontendsource.drugstore.model.OfferResult; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.adapter.CategoryAdapter; -import com.quintus.labs.drugstore.adapter.HomeSliderAdapter; -import com.quintus.labs.drugstore.adapter.NewProductAdapter; -import com.quintus.labs.drugstore.adapter.PopularProductAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.helper.Data; -import com.quintus.labs.drugstore.model.Category; -import com.quintus.labs.drugstore.model.CategoryResult; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -45,7 +49,7 @@ import retrofit2.Callback; import retrofit2.Response; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com @@ -56,11 +60,10 @@ */ public class HomeFragment extends Fragment { - ViewPager viewPager; + ViewPager viewPager,promotion_viewPager; LinearLayout sliderDotspanel; Timer timer; int page_position = 0; - Data data; View progress; LocalStorage localStorage; Gson gson = new Gson(); @@ -71,11 +74,13 @@ public class HomeFragment extends Fragment { private List categoryList = new ArrayList<>(); private List productList = new ArrayList<>(); private List popularProductList = new ArrayList<>(); + private List bannerList = new ArrayList<>(); + private List offerList = new ArrayList<>(); private RecyclerView recyclerView, nRecyclerView, pRecyclerView; - private CategoryAdapter mAdapter; + private HomeCategoryAdapter mAdapter; private NewProductAdapter nAdapter; private PopularProductAdapter pAdapter; - private Integer[] images = {R.drawable.slider1, R.drawable.slider2, R.drawable.slider3, R.drawable.slider4, R.drawable.slider5}; + ImageView offer_image1,offer_image2; public HomeFragment() { // Required empty public constructor @@ -92,21 +97,88 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, pRecyclerView = view.findViewById(R.id.popular_product_rv); nRecyclerView = view.findViewById(R.id.new_product_rv); progress = view.findViewById(R.id.progress_bar); + promotion_viewPager = view.findViewById(R.id.promotion_viewPager); + localStorage = new LocalStorage(getContext()); user = gson.fromJson(localStorage.getUserLogin(), User.class); token = new Token(user.getToken()); - getCategoryData(); + getCategoryData(); getNewProduct(); getPopularProduct(); + getBannerData(view); + getOfferData(view); + + + return view; + } + + private void getOfferData(View view) { + Callcall = RestClient.getRestService(getContext()).offers(); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null){ + OfferResult offerResult = response.body(); + offerList = offerResult.getOfferList(); + + promotion_viewPager.setVisibility(View.VISIBLE); + setupPromotionSlider(); + + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + private void setupPromotionSlider() { + PromotionSliderAdapter promotionSliderAdapter = new PromotionSliderAdapter(getContext(), offerList); + + // Disable clip to padding + promotion_viewPager.setClipToPadding(false); + // set padding manually, the more you set the padding the more you see of prev & next page + promotion_viewPager.setPadding(40, 0, 40, 0); + // sets a margin b/w individual pages to ensure that there is a gap b/w them + promotion_viewPager.setPageMargin(20); + promotion_viewPager.setAdapter(promotionSliderAdapter); + } + + private void getBannerData(View view) { + showProgressDialog(); + Callcall = RestClient.getRestService(getContext()).banners(); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null ){ + BannerResult bannerResult = response.body(); + bannerList = bannerResult.getBannerList(); + if(bannerList.size()>0){ + setupBanner(view); + } + + } + hideProgressDialog(); + } + + @Override + public void onFailure(Call call, Throwable t) { +hideProgressDialog(); + } + }); + } + + private void setupBanner(View view) { timer = new Timer(); viewPager = view.findViewById(R.id.viewPager); sliderDotspanel = view.findViewById(R.id.SliderDots); - HomeSliderAdapter viewPagerAdapter = new HomeSliderAdapter(getContext(), images); + HomeSliderAdapter viewPagerAdapter = new HomeSliderAdapter(getContext(), bannerList); viewPager.setAdapter(viewPagerAdapter); @@ -152,7 +224,6 @@ public void onPageScrollStateChanged(int state) { }); scheduleSlider(); - return view; } private void getPopularProduct() { @@ -165,7 +236,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { popularProductList = productResult.getProductList(); setupPopularProductRecycleView(); @@ -204,7 +275,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { productList = productResult.getProductList(); setupProductRecycleView(); @@ -246,7 +317,7 @@ public void onResponse(Call call, Response respo if (response != null) { CategoryResult categoryResult = response.body(); - if (categoryResult.getCode() == 200) { + if (categoryResult.getStatus() == 200) { categoryList = categoryResult.getCategoryList(); setupCategoryRecycleView(); @@ -267,7 +338,7 @@ public void onFailure(Call call, Throwable t) { } private void setupCategoryRecycleView() { - mAdapter = new CategoryAdapter(categoryList, getContext(), "Home"); + mAdapter = new HomeCategoryAdapter(categoryList, getContext(), "Home"); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/LoginFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/LoginFragment.java similarity index 87% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/LoginFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/LoginFragment.java index d7f0111..d4fe696 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/LoginFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/LoginFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.annotation.SuppressLint; import android.content.Context; @@ -29,16 +29,17 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import com.frontendsource.drugstore.activity.OTPActivity; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.model.UserResult; -import com.quintus.labs.drugstore.util.CustomToast; -import com.quintus.labs.drugstore.util.NetworkCheck; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; +import com.frontendsource.drugstore.util.CustomToast; +import com.frontendsource.drugstore.util.NetworkCheck; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import retrofit2.Call; import retrofit2.Callback; @@ -175,7 +176,7 @@ public void onClick(View v) { .beginTransaction() .setCustomAnimations(R.anim.right_enter, R.anim.left_out) .replace(R.id.frameContainer, - new ForgotPassword_Fragment(), + new ForgotPasswordFragment(), Utils.ForgotPassword_Fragment).commit(); break; case R.id.createAccount: @@ -222,15 +223,21 @@ public void onResponse(Call call, Response response) { if (response != null) { UserResult userResult = response.body(); - if (userResult != null && userResult.getCode() == 200) { + if (userResult != null && userResult.getStatus() == 200) { String userString = gson.toJson(userResult.getUser()); localStorage.createUserLoginSession(userString); - Toast.makeText(getContext(), userResult.getStatus(), Toast.LENGTH_LONG).show(); - startActivity(new Intent(getContext(), MainActivity.class)); - getActivity().finish(); + Toast.makeText(getContext(), userResult.getMessage(), Toast.LENGTH_LONG).show(); + if(userResult.getUser().getVerified().equalsIgnoreCase("0")){ + startActivity(new Intent(getContext(), OTPActivity.class)); + getActivity().finish(); + }else{ + startActivity(new Intent(getContext(), MainActivity.class)); + getActivity().finish(); + } + } else { new CustomToast().Show_Toast(getActivity(), view, - "Server error Please try after sometime"); + userResult.getMessage()); } } else { diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/MyOrderFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/MyOrderFragment.java similarity index 81% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/MyOrderFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/MyOrderFragment.java index 1666430..85e378f 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/MyOrderFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/MyOrderFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -14,14 +14,15 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.frontendsource.drugstore.model.Token; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.OrderAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.Order; -import com.quintus.labs.drugstore.model.OrdersResult; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.OrderAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Order; +import com.frontendsource.drugstore.model.OrdersResult; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -40,6 +41,7 @@ * A simple {@link Fragment} subclass. */ public class MyOrderFragment extends Fragment { + private static final String TAG = "MyOrderFragment==>"; LocalStorage localStorage; LinearLayout linearLayout; Gson gson = new Gson(); @@ -64,15 +66,15 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, localStorage = new LocalStorage(getContext()); User user = gson.fromJson(localStorage.getUserLogin(), User.class); - order = new Order(user.getId(), user.getToken()); - fetchOrderDetails(order); + Token token = new Token(user.getToken()); + fetchOrderDetails(token); return view; } - private void fetchOrderDetails(Order order) { + private void fetchOrderDetails(Token token) { - Call call = RestClient.getRestService(getContext()).orderDetails(order); + Call call = RestClient.getRestService(getContext()).orderDetails(token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -92,7 +94,7 @@ public void onResponse(Call call, Response response) @Override public void onFailure(Call call, Throwable t) { - + Log.d(TAG, "onFailure: "+t.getMessage()); } }); diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/NewProductFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/NewProductFragment.java similarity index 86% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/NewProductFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/NewProductFragment.java index 9219c5b..6d2b3cc 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/NewProductFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/NewProductFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -14,14 +14,14 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.ProductAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.ProductAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -85,7 +85,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { productList = productResult.getProductList(); setupProductRecycleView(); diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/OffrersFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/OffrersFragment.java similarity index 52% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/OffrersFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/OffrersFragment.java index b45a101..255bc06 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/OffrersFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/OffrersFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -12,15 +12,21 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.OfferAdapter; -import com.quintus.labs.drugstore.helper.Data; -import com.quintus.labs.drugstore.model.Offer; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.OfferAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.Offer; +import com.frontendsource.drugstore.model.OfferResult; import java.util.ArrayList; import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com @@ -31,7 +37,6 @@ */ public class OffrersFragment extends Fragment { - Data data; private List offerList = new ArrayList<>(); private RecyclerView recyclerView; private OfferAdapter mAdapter; @@ -46,17 +51,36 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_offer, container, false); recyclerView = view.findViewById(R.id.offer_rv); - data = new Data(); - mAdapter = new OfferAdapter(data.getOfferList(), getContext()); - RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext()); - recyclerView.setLayoutManager(mLayoutManager); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setAdapter(mAdapter); + getOfferData(); + return view; } + private void getOfferData() { + Callcall = RestClient.getRestService(getContext()).offers(); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(response!=null){ + OfferResult offerResult = response.body(); + offerList = offerResult.getOfferList(); + mAdapter = new OfferAdapter(offerList, getContext()); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext()); + recyclerView.setLayoutManager(mLayoutManager); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setAdapter(mAdapter); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/PaymentFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PaymentFragment.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/PaymentFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PaymentFragment.java index 7d494c5..df7587f 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/PaymentFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PaymentFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -15,8 +15,8 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.BaseActivity; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.BaseActivity; /** * Drug App * https://github.com/quintuslabs/GroceryStore diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/PopularProductFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PopularProductFragment.java similarity index 85% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/PopularProductFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PopularProductFragment.java index 6cdabee..b1362b2 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/PopularProductFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PopularProductFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -14,15 +14,15 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.adapter.ProductAdapter; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.helper.Data; -import com.quintus.labs.drugstore.model.Product; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.adapter.ProductAdapter; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.helper.Data; +import com.frontendsource.drugstore.model.Product; +import com.frontendsource.drugstore.model.ProductResult; +import com.frontendsource.drugstore.model.Token; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.ArrayList; import java.util.List; @@ -93,7 +93,7 @@ public void onResponse(Call call, Response respons if (response != null) { ProductResult productResult = response.body(); - if (productResult.getCode() == 200) { + if (productResult.getStatus() == 200) { productList = productResult.getProductList(); setupPopularProductRecycleView(); diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PrescriptionFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PrescriptionFragment.java new file mode 100644 index 0000000..e5df896 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/PrescriptionFragment.java @@ -0,0 +1,44 @@ +package com.frontendsource.drugstore.fragment; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.frontendsource.drugstore.R; +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ + +/** + * A simple {@link Fragment} subclass. + */ +public class PrescriptionFragment extends Fragment { + + + public PrescriptionFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_prescription, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + //you can set the title for your toolbar here for different fragments different titles + getActivity().setTitle("Blank"); + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/ProfileFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ProfileFragment.java similarity index 87% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/ProfileFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ProfileFragment.java index 69d98a1..16407e9 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/ProfileFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/ProfileFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.os.Bundle; @@ -11,9 +11,9 @@ import androidx.fragment.app.Fragment; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; /** * Drug App * https://github.com/quintuslabs/GroceryStore @@ -50,7 +50,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, localStorage = new LocalStorage(getContext()); User user = gson.fromJson(localStorage.getUserLogin(), User.class); - name.setText(user.getFname()); + name.setText(user.getName()); email.setText(user.getEmail()); mobile.setText(user.getMobile()); address.setText(user.getAddress()); diff --git a/app/src/main/java/com/quintus/labs/drugstore/fragment/SignUpFragment.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/SignUpFragment.java similarity index 82% rename from app/src/main/java/com/quintus/labs/drugstore/fragment/SignUpFragment.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/SignUpFragment.java index dfc7141..6cc0c43 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/fragment/SignUpFragment.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/fragment/SignUpFragment.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.fragment; +package com.frontendsource.drugstore.fragment; import android.annotation.SuppressLint; import android.content.Intent; @@ -18,17 +18,18 @@ import androidx.fragment.app.Fragment; +import com.frontendsource.drugstore.activity.OTPActivity; import com.google.gson.Gson; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.LoginRegisterActivity; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.api.clients.RestClient; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.model.UserResult; -import com.quintus.labs.drugstore.util.CustomToast; -import com.quintus.labs.drugstore.util.NetworkCheck; -import com.quintus.labs.drugstore.util.Utils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.LoginRegisterActivity; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.api.clients.RestClient; +import com.frontendsource.drugstore.model.User; +import com.frontendsource.drugstore.model.UserResult; +import com.frontendsource.drugstore.util.CustomToast; +import com.frontendsource.drugstore.util.NetworkCheck; +import com.frontendsource.drugstore.util.Utils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; import java.util.regex.Pattern; @@ -132,13 +133,7 @@ private void checkValidation() { if (getFullName.length() == 0) { fullName.setError("Eneter Your Name"); fullName.requestFocus(); - }/* else if (getEmailId.length() == 0) { - emailId.setError("Eneter Your Email"); - emailId.requestFocus(); - } else if (!m.find()) { - emailId.setError("Eneter Correct Email"); - emailId.requestFocus(); - }*/ else if (getMobileNumber.length() == 0) { + } else if (getMobileNumber.length() == 0) { mobileNumber.setError("Eneter Your Mobile Number"); mobileNumber.requestFocus(); } else if (getPassword.length() == 0) { @@ -151,7 +146,7 @@ private void checkValidation() { new CustomToast().Show_Toast(getActivity(), view, "Accept Term & Conditions"); } else { - user = new User(getFullName, "", getMobileNumber, getPassword, firebaseToken); + user = new User(getFullName, getMobileNumber, getPassword, firebaseToken); registerUser(user); } @@ -168,15 +163,16 @@ public void onResponse(Call call, Response response) { if (response != null) { UserResult userResult = response.body(); - if (userResult != null && userResult.getCode() == 201) { + if (userResult != null && userResult.getStatus() == 201) { String userString = gson.toJson(userResult.getUser()); localStorage.createUserLoginSession(userString); - Toast.makeText(getContext(), userResult.getStatus(), Toast.LENGTH_LONG).show(); - startActivity(new Intent(getContext(), MainActivity.class)); + Toast.makeText(getContext(), userResult.getMessage(), Toast.LENGTH_LONG).show(); + + startActivity(new Intent(getContext(), OTPActivity.class)); getActivity().finish(); } else { new CustomToast().Show_Toast(getActivity(), view, - "Server Error Please try after sometime"); + userResult.getMessage()); } diff --git a/app/src/main/java/com/quintus/labs/drugstore/helper/Converter.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Converter.java similarity index 95% rename from app/src/main/java/com/quintus/labs/drugstore/helper/Converter.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Converter.java index c9fb860..037acdb 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/helper/Converter.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Converter.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.helper; +package com.frontendsource.drugstore.helper; import android.content.Context; import android.graphics.Bitmap; @@ -9,7 +9,7 @@ import android.widget.ImageView; import android.widget.TextView; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; /** * Drug App diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Data.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Data.java new file mode 100644 index 0000000..88ae5dc --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/Data.java @@ -0,0 +1,24 @@ +package com.frontendsource.drugstore.helper; + +import com.frontendsource.drugstore.model.Offer; + +import java.util.ArrayList; +import java.util.List; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class Data { + + List offerList = new ArrayList<>(); + + + public List getOfferList() { + + + return offerList; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryEditText.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryEditText.java new file mode 100644 index 0000000..8a17d2f --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryEditText.java @@ -0,0 +1,618 @@ +package com.frontendsource.drugstore.helper; + + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ValueAnimator; +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.ActionMode; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.animation.OvershootInterpolator; +import android.view.inputmethod.InputMethodManager; + +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatEditText; +import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; + +import com.frontendsource.drugstore.R; + + +public class PinEntryEditText extends AppCompatEditText { + private static final String XML_NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android"; + + public static final String DEFAULT_MASK = "\u25CF"; + + protected String mMask = null; + protected StringBuilder mMaskChars = null; + protected String mSingleCharHint = null; + protected int mAnimatedType = 0; + protected float mSpace = 24; //24 dp by default, space between the lines + protected float mCharSize; + protected float mNumChars = 4; + protected float mTextBottomPadding = 8; //8dp by default, height of the text from our lines + protected int mMaxLength = 4; + protected RectF[] mLineCoords; + protected float[] mCharBottom; + protected Paint mCharPaint; + protected Paint mLastCharPaint; + protected Paint mSingleCharPaint; + protected Drawable mPinBackground; + protected Rect mTextHeight = new Rect(); + protected boolean mIsDigitSquare = false; + + protected OnClickListener mClickListener; + protected OnPinEnteredListener mOnPinEnteredListener = null; + + protected float mLineStroke = 1; //1dp by default + protected float mLineStrokeSelected = 2; //2dp by default + protected Paint mLinesPaint; + protected boolean mAnimate = false; + protected boolean mHasError = false; + protected ColorStateList mOriginalTextColors; + protected int[][] mStates = new int[][]{ + new int[]{android.R.attr.state_selected}, // selected + new int[]{android.R.attr.state_active}, // error + new int[]{android.R.attr.state_focused}, // focused + new int[]{-android.R.attr.state_focused}, // unfocused + }; + + protected int[] mColors = new int[]{ + Color.GREEN, + Color.RED, + Color.BLACK, + Color.GRAY + }; + + protected ColorStateList mColorStates = new ColorStateList(mStates, mColors); + + public PinEntryEditText(Context context) { + super(context); + } + + public PinEntryEditText(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public PinEntryEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + public void setMaxLength(final int maxLength) { + mMaxLength = maxLength; + mNumChars = maxLength; + + setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); + + setText(null); + invalidate(); + } + + public void setMask(String mask) { + mMask = mask; + mMaskChars = null; + invalidate(); + } + + public void setSingleCharHint(String hint) { + mSingleCharHint = hint; + invalidate(); + } + + private void init(Context context, AttributeSet attrs) { + float multi = context.getResources().getDisplayMetrics().density; + mLineStroke = multi * mLineStroke; + mLineStrokeSelected = multi * mLineStrokeSelected; + mSpace = multi * mSpace; //convert to pixels for our density + mTextBottomPadding = multi * mTextBottomPadding; //convert to pixels for our density + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PinEntryEditText, 0, 0); + try { + TypedValue outValue = new TypedValue(); + ta.getValue(R.styleable.PinEntryEditText_pinAnimationType, outValue); + mAnimatedType = outValue.data; + mMask = ta.getString(R.styleable.PinEntryEditText_pinCharacterMask); + mSingleCharHint = ta.getString(R.styleable.PinEntryEditText_pinRepeatedHint); + mLineStroke = ta.getDimension(R.styleable.PinEntryEditText_pinLineStroke, mLineStroke); + mLineStrokeSelected = ta.getDimension(R.styleable.PinEntryEditText_pinLineStrokeSelected, mLineStrokeSelected); + mSpace = ta.getDimension(R.styleable.PinEntryEditText_pinCharacterSpacing, mSpace); + mTextBottomPadding = ta.getDimension(R.styleable.PinEntryEditText_pinTextBottomPadding, mTextBottomPadding); + mIsDigitSquare = ta.getBoolean(R.styleable.PinEntryEditText_pinBackgroundIsSquare, mIsDigitSquare); + mPinBackground = ta.getDrawable(R.styleable.PinEntryEditText_pinBackgroundDrawable); + ColorStateList colors = ta.getColorStateList(R.styleable.PinEntryEditText_pinLineColors); + if (colors != null) { + mColorStates = colors; + } + } finally { + ta.recycle(); + } + + mCharPaint = new Paint(getPaint()); + mLastCharPaint = new Paint(getPaint()); + mSingleCharPaint = new Paint(getPaint()); + mLinesPaint = new Paint(getPaint()); + mLinesPaint.setStrokeWidth(mLineStroke); + + TypedValue outValue = new TypedValue(); + context.getTheme().resolveAttribute(R.attr.colorControlActivated, + outValue, true); + int colorSelected = outValue.data; + mColors[0] = colorSelected; + + int colorFocused = isInEditMode() ? Color.GRAY : ContextCompat.getColor(context, R.color.pin_normal); + mColors[1] = colorFocused; + + int colorUnfocused = isInEditMode() ? Color.GRAY : ContextCompat.getColor(context, R.color.pin_normal); + mColors[2] = colorUnfocused; + + setBackgroundResource(0); + + mMaxLength = attrs.getAttributeIntValue(XML_NAMESPACE_ANDROID, "maxLength", 4); + mNumChars = mMaxLength; + + //Disable copy paste + super.setCustomSelectionActionModeCallback(new ActionMode.Callback() { + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + public void onDestroyActionMode(ActionMode mode) { + } + + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + return false; + } + + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + return false; + } + }); + // When tapped, move cursor to end of text. + super.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + setSelection(getText().length()); + if (mClickListener != null) { + mClickListener.onClick(v); + } + } + }); + + super.setOnLongClickListener(new OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + setSelection(getText().length()); + return true; + } + }); + + //If input type is password and no mask is set, use a default mask + if ((getInputType() & InputType.TYPE_TEXT_VARIATION_PASSWORD) == InputType.TYPE_TEXT_VARIATION_PASSWORD && TextUtils.isEmpty(mMask)) { + mMask = DEFAULT_MASK; + } else if ((getInputType() & InputType.TYPE_NUMBER_VARIATION_PASSWORD) == InputType.TYPE_NUMBER_VARIATION_PASSWORD && TextUtils.isEmpty(mMask)) { + mMask = DEFAULT_MASK; + } + + if (!TextUtils.isEmpty(mMask)) { + mMaskChars = getMaskChars(); + } + + //Height of the characters, used if there is a background drawable + getPaint().getTextBounds("|", 0, 1, mTextHeight); + + mAnimate = mAnimatedType > -1; + } + + @Override + public void setInputType(int type) { + super.setInputType(type); + + if ((type & InputType.TYPE_TEXT_VARIATION_PASSWORD) == InputType.TYPE_TEXT_VARIATION_PASSWORD + || (type & InputType.TYPE_NUMBER_VARIATION_PASSWORD) == InputType.TYPE_NUMBER_VARIATION_PASSWORD) { + // If input type is password and no mask is set, use a default mask + if (TextUtils.isEmpty(mMask)) { + setMask(DEFAULT_MASK); + } + } else { + // If input type is not password, remove mask + setMask(null); + } + + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + mOriginalTextColors = getTextColors(); + if (mOriginalTextColors != null) { + mLastCharPaint.setColor(mOriginalTextColors.getDefaultColor()); + mCharPaint.setColor(mOriginalTextColors.getDefaultColor()); + mSingleCharPaint.setColor(getCurrentHintTextColor()); + } + int availableWidth = getWidth() - ViewCompat.getPaddingEnd(this) - ViewCompat.getPaddingStart(this); + if (mSpace < 0) { + mCharSize = (availableWidth / (mNumChars * 2 - 1)); + } else { + mCharSize = (availableWidth - (mSpace * (mNumChars - 1))) / mNumChars; + } + mLineCoords = new RectF[(int) mNumChars]; + mCharBottom = new float[(int) mNumChars]; + int startX; + int bottom = getHeight() - getPaddingBottom(); + int rtlFlag; + final boolean isLayoutRtl = ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL; + if (isLayoutRtl) { + rtlFlag = -1; + startX = (int) (getWidth() - ViewCompat.getPaddingStart(this) - mCharSize); + } else { + rtlFlag = 1; + startX = ViewCompat.getPaddingStart(this); + } + for (int i = 0; i < mNumChars; i++) { + mLineCoords[i] = new RectF(startX, bottom, startX + mCharSize, bottom); + if (mPinBackground != null) { + if (mIsDigitSquare) { + mLineCoords[i].top = getPaddingTop(); + mLineCoords[i].right = startX + mLineCoords[i].width(); + } else { + mLineCoords[i].top -= mTextHeight.height() + mTextBottomPadding * 2; + } + } + + if (mSpace < 0) { + startX += rtlFlag * mCharSize * 2; + } else { + startX += rtlFlag * (mCharSize + mSpace); + } + mCharBottom[i] = mLineCoords[i].bottom - mTextBottomPadding; + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (mIsDigitSquare) { + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + int measuredWidth = 0; + int measuredHeight = 0; + // If we want a square or circle pin box, we might be able + // to figure out the dimensions outselves + // if width and height are set to wrap_content or match_parent + if (widthMode == MeasureSpec.EXACTLY) { + measuredWidth = MeasureSpec.getSize(widthMeasureSpec); + measuredHeight = (int) ((measuredWidth - (mNumChars - 1 * mSpace)) / mNumChars); + } else if (heightMode == MeasureSpec.EXACTLY) { + measuredHeight = MeasureSpec.getSize(heightMeasureSpec); + measuredWidth = (int) ((measuredHeight * mNumChars) + (mSpace * mNumChars - 1)); + } else if (widthMode == MeasureSpec.AT_MOST) { + measuredWidth = MeasureSpec.getSize(widthMeasureSpec); + measuredHeight = (int) ((measuredWidth - (mNumChars - 1 * mSpace)) / mNumChars); + } else if (heightMode == MeasureSpec.AT_MOST) { + measuredHeight = MeasureSpec.getSize(heightMeasureSpec); + measuredWidth = (int) ((measuredHeight * mNumChars) + (mSpace * mNumChars - 1)); + } else { + // Both unspecific + // Try for a width based on our minimum + measuredWidth = getPaddingLeft() + getPaddingRight() + getSuggestedMinimumWidth(); + + // Whatever the width ends up being, ask for a height that would let the pie + // get as big as it can + measuredHeight = (int) ((measuredWidth - (mNumChars - 1 * mSpace)) / mNumChars); + } + + setMeasuredDimension( + resolveSizeAndState(measuredWidth, widthMeasureSpec, 1), resolveSizeAndState(measuredHeight, heightMeasureSpec, 0)); + } else { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } + + @Override + public void setOnClickListener(OnClickListener l) { + mClickListener = l; + } + + @Override + public void setCustomSelectionActionModeCallback(ActionMode.Callback actionModeCallback) { + throw new RuntimeException("setCustomSelectionActionModeCallback() not supported."); + } + + @Override + protected void onDraw(Canvas canvas) { + //super.onDraw(canvas); + CharSequence text = getFullText(); + int textLength = text.length(); + float[] textWidths = new float[textLength]; + getPaint().getTextWidths(text, 0, textLength, textWidths); + + float hintWidth = 0; + if (mSingleCharHint != null) { + float[] hintWidths = new float[mSingleCharHint.length()]; + getPaint().getTextWidths(mSingleCharHint, hintWidths); + for (float i : hintWidths) { + hintWidth += i; + } + } + for (int i = 0; i < mNumChars; i++) { + //If a background for the pin characters is specified, it should be behind the characters. + if (mPinBackground != null) { + updateDrawableState(i < textLength, i == textLength); + mPinBackground.setBounds((int) mLineCoords[i].left, (int) mLineCoords[i].top, (int) mLineCoords[i].right, (int) mLineCoords[i].bottom); + mPinBackground.draw(canvas); + } + float middle = mLineCoords[i].left + mCharSize / 2; + if (textLength > i) { + if (!mAnimate || i != textLength - 1) { + canvas.drawText(text, i, i + 1, middle - textWidths[i] / 2, mCharBottom[i], mCharPaint); + } else { + canvas.drawText(text, i, i + 1, middle - textWidths[i] / 2, mCharBottom[i], mLastCharPaint); + } + } else if (mSingleCharHint != null) { + canvas.drawText(mSingleCharHint, middle - hintWidth / 2, mCharBottom[i], mSingleCharPaint); + } + //The lines should be in front of the text (because that's how I want it). + if (mPinBackground == null) { + updateColorForLines(i <= textLength); + canvas.drawLine(mLineCoords[i].left, mLineCoords[i].top, mLineCoords[i].right, mLineCoords[i].bottom, mLinesPaint); + } + } + } + + private CharSequence getFullText() { + if (TextUtils.isEmpty(mMask)) { + return getText(); + } else { + return getMaskChars(); + } + } + + private StringBuilder getMaskChars() { + if (mMaskChars == null) { + mMaskChars = new StringBuilder(); + } + int textLength = getText().length(); + while (mMaskChars.length() != textLength) { + if (mMaskChars.length() < textLength) { + mMaskChars.append(mMask); + } else { + mMaskChars.deleteCharAt(mMaskChars.length() - 1); + } + } + return mMaskChars; + } + + + private int getColorForState(int... states) { + return mColorStates.getColorForState(states, Color.GRAY); + } + + /** + * @param hasTextOrIsNext Is the color for a character that has been typed or is + * the next character to be typed? + */ + protected void updateColorForLines(boolean hasTextOrIsNext) { + if (mHasError) { + mLinesPaint.setColor(getColorForState(android.R.attr.state_active)); + } else if (isFocused()) { + mLinesPaint.setStrokeWidth(mLineStrokeSelected); + mLinesPaint.setColor(getColorForState(android.R.attr.state_focused)); + if (hasTextOrIsNext) { + mLinesPaint.setColor(getColorForState(android.R.attr.state_selected)); + } + } else { + mLinesPaint.setStrokeWidth(mLineStroke); + mLinesPaint.setColor(getColorForState(-android.R.attr.state_focused)); + } + } + + protected void updateDrawableState(boolean hasText, boolean isNext) { + if (mHasError) { + mPinBackground.setState(new int[]{android.R.attr.state_active}); + } else if (isFocused()) { + mPinBackground.setState(new int[]{android.R.attr.state_focused}); + if (isNext) { + mPinBackground.setState(new int[]{android.R.attr.state_focused, android.R.attr.state_selected}); + } else if (hasText) { + mPinBackground.setState(new int[]{android.R.attr.state_focused, android.R.attr.state_checked}); + } + } else { + if (hasText) { + mPinBackground.setState(new int[]{-android.R.attr.state_focused, android.R.attr.state_checked}); + } else { + mPinBackground.setState(new int[]{-android.R.attr.state_focused}); + } + } + } + + public void setError(boolean hasError) { + mHasError = hasError; + invalidate(); + } + + public boolean isError() { + return mHasError; + } + + /** + * Request focus on this PinEntryEditText + */ + public void focus() { + requestFocus(); + + // Show keyboard + InputMethodManager inputMethodManager = (InputMethodManager) getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.showSoftInput(this, 0); + } + + @Override + public void setTypeface(@Nullable Typeface tf) { + super.setTypeface(tf); + setCustomTypeface(tf); + } + + @Override + public void setTypeface(@Nullable Typeface tf, int style) { + super.setTypeface(tf, style); + setCustomTypeface(tf); + } + + private void setCustomTypeface(@Nullable Typeface tf) { + if (mCharPaint != null) { + mCharPaint.setTypeface(tf); + mLastCharPaint.setTypeface(tf); + mSingleCharPaint.setTypeface(tf); + mLinesPaint.setTypeface(tf); + } + } + + public void setPinLineColors(ColorStateList colors) { + mColorStates = colors; + invalidate(); + } + + public void setPinBackground(Drawable pinBackground) { + mPinBackground = pinBackground; + invalidate(); + } + + @Override + protected void onTextChanged(CharSequence text, final int start, int lengthBefore, final int lengthAfter) { + setError(false); + if (mLineCoords == null || !mAnimate) { + if (mOnPinEnteredListener != null && text.length() == mMaxLength) { + mOnPinEnteredListener.onPinEntered(text); + } + return; + } + + if (mAnimatedType == -1) { + invalidate(); + return; + } + + if (lengthAfter > lengthBefore) { + if (mAnimatedType == 0) { + animatePopIn(); + } else { + animateBottomUp(text, start); + } + } + } + + private void animatePopIn() { + ValueAnimator va = ValueAnimator.ofFloat(1, getPaint().getTextSize()); + va.setDuration(200); + va.setInterpolator(new OvershootInterpolator()); + va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + mLastCharPaint.setTextSize((Float) animation.getAnimatedValue()); + PinEntryEditText.this.invalidate(); + } + }); + if (getText().length() == mMaxLength && mOnPinEnteredListener != null) { + va.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + mOnPinEnteredListener.onPinEntered(getText()); + } + + @Override + public void onAnimationCancel(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + } + }); + } + va.start(); + } + + private void animateBottomUp(CharSequence text, final int start) { + mCharBottom[start] = mLineCoords[start].bottom - mTextBottomPadding; + ValueAnimator animUp = ValueAnimator.ofFloat(mCharBottom[start] + getPaint().getTextSize(), mCharBottom[start]); + animUp.setDuration(300); + animUp.setInterpolator(new OvershootInterpolator()); + animUp.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + Float value = (Float) animation.getAnimatedValue(); + mCharBottom[start] = value; + PinEntryEditText.this.invalidate(); + } + }); + + mLastCharPaint.setAlpha(255); + ValueAnimator animAlpha = ValueAnimator.ofInt(0, 255); + animAlpha.setDuration(300); + animAlpha.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + Integer value = (Integer) animation.getAnimatedValue(); + mLastCharPaint.setAlpha(value); + } + }); + + AnimatorSet set = new AnimatorSet(); + if (text.length() == mMaxLength && mOnPinEnteredListener != null) { + set.addListener(new Animator.AnimatorListener() { + + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + mOnPinEnteredListener.onPinEntered(getText()); + } + + @Override + public void onAnimationCancel(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }); + } + set.playTogether(animUp, animAlpha); + set.start(); + } + + public void setAnimateText(boolean animate) { + mAnimate = animate; + } + + public void setOnPinEnteredListener(OnPinEnteredListener l) { + mOnPinEnteredListener = l; + } + + public interface OnPinEnteredListener { + void onPinEntered(CharSequence str); + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/AccentType.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/AccentType.java new file mode 100644 index 0000000..88a1c67 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/AccentType.java @@ -0,0 +1,11 @@ +package com.frontendsource.drugstore.helper.PinEntryView; + + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@IntDef(flag=true, value={PinEntryView.ACCENT_NONE, PinEntryView.ACCENT_ALL, PinEntryView.ACCENT_CHARACTER}) +@Retention(RetentionPolicy.SOURCE) +public @interface AccentType {} \ No newline at end of file diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/PinEntryView.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/PinEntryView.java new file mode 100644 index 0000000..254d0f4 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/helper/PinEntryView/PinEntryView.java @@ -0,0 +1,513 @@ +package com.frontendsource.drugstore.helper.PinEntryView; + + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.os.Build; +import android.os.Parcel; +import android.os.Parcelable; +import android.text.Editable; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.TextView; + +import com.frontendsource.drugstore.R; + +/** + * A PIN entry view widget for Android based on the Android 5 Material Theme via the AppCompat v7 + * support library. + */ +public class PinEntryView extends ViewGroup { + + /** + * Accent types + */ + public static final int ACCENT_NONE = 0; + public static final int ACCENT_ALL = 1; + public static final int ACCENT_CHARACTER = 2; + + /** + * Number of digits + */ + private int digits; + + /** + * Input type + */ + private int inputType; + + /** + * Pin digit dimensions and styles + */ + private int digitWidth; + private int digitHeight; + private int digitBackground; + private int digitSpacing; + private int digitTextSize; + private int digitTextColor; + private int digitElevation; + + /** + * Accent dimensions and styles + */ + private int accentType; + private int accentWidth; + private int accentColor; + + /** + * Character to use for each digit + */ + private String mask = "*"; + + /** + * Edit text to handle input + */ + private EditText editText; + + /** + * Focus change listener to send focus events to + */ + private OnFocusChangeListener onFocusChangeListener; + + /** + * Pin entered listener used as a callback for when all digits have been entered + */ + private OnPinEnteredListener onPinEnteredListener; + + /** + * If set to false, will always draw accent color if type is CHARACTER or ALL + * If set to true, will draw accent color only when focussed. + */ + private boolean accentRequiresFocus; + + public PinEntryView(Context context) { + this(context, null); + } + + public PinEntryView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public PinEntryView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + // Get style information + TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.PinEntryView); + digits = array.getInt(R.styleable.PinEntryView_numDigits, 4); + inputType = array.getInt(R.styleable.PinEntryView_pinInputType, InputType.TYPE_CLASS_NUMBER); + accentType = array.getInt(R.styleable.PinEntryView_accentType, ACCENT_NONE); + + // Dimensions + DisplayMetrics metrics = getResources().getDisplayMetrics(); + digitWidth = array.getDimensionPixelSize(R.styleable.PinEntryView_digitWidth, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, metrics)); + digitHeight = array.getDimensionPixelSize(R.styleable.PinEntryView_digitHeight, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, metrics)); + digitSpacing = array.getDimensionPixelSize(R.styleable.PinEntryView_digitSpacing, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, metrics)); + digitTextSize = array.getDimensionPixelSize(R.styleable.PinEntryView_digitTextSize, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 15, metrics)); + accentWidth = array.getDimensionPixelSize(R.styleable.PinEntryView_accentWidth, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, metrics)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + digitElevation = array.getDimensionPixelSize(R.styleable.PinEntryView_digitElevation, 0); + } + + // Get theme to resolve defaults + Resources.Theme theme = getContext().getTheme(); + + // Background colour, default to android:windowBackground from theme + TypedValue background = new TypedValue(); + theme.resolveAttribute(android.R.attr.windowBackground, background, true); + digitBackground = array.getResourceId(R.styleable.PinEntryView_digitBackground, + background.resourceId); + + // Text colour, default to android:textColorPrimary from theme + TypedValue textColor = new TypedValue(); + theme.resolveAttribute(android.R.attr.textColorPrimary, textColor, true); + digitTextColor = array.getColor(R.styleable.PinEntryView_digitTextColor, + textColor.resourceId > 0 ? getResources().getColor(textColor.resourceId) : + textColor.data); + + // Accent colour, default to android:colorAccent from theme + TypedValue accentColor = new TypedValue(); + theme.resolveAttribute(androidx.appcompat.R.attr.colorAccent, accentColor, true); + this.accentColor = array.getColor(R.styleable.PinEntryView_pinAccentColor, + accentColor.resourceId > 0 ? getResources().getColor(accentColor.resourceId) : + accentColor.data); + + // Mask character + String maskCharacter = array.getString(R.styleable.PinEntryView_mask); + if (maskCharacter != null) { + mask = maskCharacter; + } + + // Accent shown, default to only when focused + accentRequiresFocus = array.getBoolean(R.styleable.PinEntryView_accentRequiresFocus, true); + + // Recycle the typed array + array.recycle(); + + // Add child views + addViews(); + } + + @Override public boolean shouldDelayChildPressedState() { + return false; + } + + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // Calculate the size of the view + int width = (digitWidth * digits) + (digitSpacing * (digits - 1)); + setMeasuredDimension( + width + getPaddingLeft() + getPaddingRight() + (digitElevation * 2), + digitHeight + getPaddingTop() + getPaddingBottom() + (digitElevation * 2)); + + int height = MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY); + + // Measure children + for (int i = 0; i < getChildCount(); i++) { + getChildAt(i).measure(width, height); + } + } + + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { + // Position the text views + for (int i = 0; i < digits; i++) { + View child = getChildAt(i); + int left = i * digitWidth + (i > 0 ? i * digitSpacing : 0); + child.layout( + left + getPaddingLeft() + digitElevation, + getPaddingTop() + (digitElevation / 2), + left + getPaddingLeft() + digitElevation + digitWidth, + getPaddingTop() + (digitElevation / 2) + digitHeight); + } + + // Add the edit text as a 1px wide view to allow it to focus + getChildAt(digits).layout(0, 0, 1, getMeasuredHeight()); + } + + @Override public boolean onTouchEvent(MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + // Make sure this view is focused + editText.requestFocus(); + + // Show keyboard + InputMethodManager inputMethodManager = (InputMethodManager) getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.showSoftInput(editText, 0); + return true; + } + return super.onTouchEvent(event); + } + + @Override protected Parcelable onSaveInstanceState() { + Parcelable parcelable = super.onSaveInstanceState(); + SavedState savedState = new SavedState(parcelable); + savedState.editTextValue = editText.getText().toString(); + return savedState; + } + + @Override protected void onRestoreInstanceState(Parcelable state) { + SavedState savedState = (SavedState) state; + super.onRestoreInstanceState(savedState.getSuperState()); + editText.setText(savedState.editTextValue); + editText.setSelection(savedState.editTextValue.length()); + } + + @Override public OnFocusChangeListener getOnFocusChangeListener() { + return onFocusChangeListener; + } + + @Override public void setOnFocusChangeListener(OnFocusChangeListener l) { + onFocusChangeListener = l; + } + + /** + * Add a TextWatcher to the EditText + * + * @param watcher + */ + public void addTextChangedListener(TextWatcher watcher) { + editText.addTextChangedListener(watcher); + } + + /** + * Remove a TextWatcher from the EditText + * + * @param watcher + */ + public void removeTextChangedListener(TextWatcher watcher) { + editText.removeTextChangedListener(watcher); + } + + /** + * Get current pin entered listener + * + * @return + */ + public OnPinEnteredListener getOnPinEnteredListener() { + return onPinEnteredListener; + } + + /** + * Set pin entered listener + * + * @param onPinEnteredListener + */ + public void setOnPinEnteredListener(OnPinEnteredListener onPinEnteredListener) { + this.onPinEnteredListener = onPinEnteredListener; + } + + /** + * Get the {@link Editable} from the EditText + * + * @return + */ + public Editable getText() { + return editText.getText(); + } + + /** + * Set text to the EditText + * + * @param text + */ + public void setText(CharSequence text) { + if (text.length() > digits) { + text = text.subSequence(0, digits); + } + editText.setText(text); + } + + /** + * Clear pin input + */ + public void clearText() { + editText.setText(""); + } + + public int getDigits() { + return digits; + } + + public int getInputType() { + return inputType; + } + + public int getAccentType() { + return accentType; + } + + public int getDigitWidth() { + return digitWidth; + } + + public int getDigitHeight() { + return digitHeight; + } + + public int getDigitSpacing() { + return digitSpacing; + } + + public int getDigitTextSize() { + return digitTextSize; + } + + public int getAccentWidth() { + return accentWidth; + } + + public int getDigitElevation() { + return digitElevation; + } + + public int getDigitBackground() { + return digitBackground; + } + + public int getDigitTextColor() { + return digitTextColor; + } + + public int getAccentColor() { + return accentColor; + } + + public String getMask() { + return mask; + } + + public boolean getAccentRequiresFocus() { + return accentRequiresFocus; + } + + /** + * Create views and add them to the view group + */ + private void addViews() { + // Add a digit view for each digit + for (int i = 0; i < digits; i++) { + DigitView digitView = new DigitView(getContext()); + digitView.setWidth(digitWidth); + digitView.setHeight(digitHeight); + digitView.setBackgroundResource(digitBackground); + digitView.setTextColor(digitTextColor); + digitView.setTextSize(TypedValue.COMPLEX_UNIT_PX, digitTextSize); + digitView.setGravity(Gravity.CENTER); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + digitView.setElevation(digitElevation); + } + addView(digitView); + } + + // Add an "invisible" edit text to handle input + editText = new EditText(getContext()); + editText.setBackgroundColor(getResources().getColor(android.R.color.transparent)); + editText.setTextColor(getResources().getColor(android.R.color.transparent)); + editText.setCursorVisible(false); + editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(digits)}); + editText.setInputType(inputType); + editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); + editText.setOnFocusChangeListener(new OnFocusChangeListener() { + @Override public void onFocusChange(View v, boolean hasFocus) { + // Update the selected state of the views + int length = editText.getText().length(); + for (int i = 0; i < digits; i++) { + getChildAt(i).setSelected(hasFocus && (accentType == ACCENT_ALL || + (accentType == ACCENT_CHARACTER && (i == length || + (i == digits - 1 && length == digits))))); + } + + // Make sure the cursor is at the end + editText.setSelection(length); + + // Provide focus change events to any listener + if (onFocusChangeListener != null) { + onFocusChangeListener.onFocusChange(PinEntryView.this, hasFocus); + } + } + }); + editText.addTextChangedListener(new TextWatcher() { + @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override public void afterTextChanged(Editable s) { + int length = s.length(); + for (int i = 0; i < digits; i++) { + if (s.length() > i) { + String mask = PinEntryView.this.mask == null || PinEntryView.this.mask.length() == 0 ? + String.valueOf(s.charAt(i)) : PinEntryView.this.mask; + ((TextView) getChildAt(i)).setText(mask); + } else { + ((TextView) getChildAt(i)).setText(""); + } + if (editText.hasFocus()) { + getChildAt(i).setSelected(accentType == ACCENT_ALL || + (accentType == ACCENT_CHARACTER && (i == length || + (i == digits - 1 && length == digits)))); + } + } + + if (length == digits && onPinEnteredListener != null) { + onPinEnteredListener.onPinEntered(s.toString()); + } + } + }); + addView(editText); + } + + /** + * Save state of the view + */ + static class SavedState extends BaseSavedState { + + public static final Creator CREATOR = + new Creator() { + @Override public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + @Override public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + String editTextValue; + + public SavedState(Parcelable superState) { + super(superState); + } + + private SavedState(Parcel source) { + super(source); + editTextValue = source.readString(); + } + + @Override public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeString(editTextValue); + } + + } + + /** + * Custom text view that adds a coloured accent when selected + */ + private class DigitView extends TextView { + + /** + * Paint used to draw accent + */ + private Paint paint; + + public DigitView(Context context) { + this(context, null); + } + + public DigitView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public DigitView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + // Setup paint to keep onDraw as lean as possible + paint = new Paint(); + paint.setStyle(Paint.Style.FILL); + paint.setColor(accentColor); + } + + @Override protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + // If selected draw the accent + if (isSelected() || !accentRequiresFocus) { + canvas.drawRect(0, getHeight() - accentWidth, getWidth(), getHeight(), paint); + } + } + + } + + public interface OnPinEnteredListener { + void onPinEntered(String pin); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/interfaces/AddorRemoveCallbacks.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/AddorRemoveCallbacks.java similarity index 85% rename from app/src/main/java/com/quintus/labs/drugstore/interfaces/AddorRemoveCallbacks.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/AddorRemoveCallbacks.java index f460cf6..238c79e 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/interfaces/AddorRemoveCallbacks.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/AddorRemoveCallbacks.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.interfaces; +package com.frontendsource.drugstore.interfaces; /** diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/CategorySelectCallBacks.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/CategorySelectCallBacks.java new file mode 100644 index 0000000..a46dfe3 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/interfaces/CategorySelectCallBacks.java @@ -0,0 +1,5 @@ +package com.frontendsource.drugstore.interfaces; + +public interface CategorySelectCallBacks { + void onCategorySelect(int position); +} \ No newline at end of file diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Banner.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Banner.java new file mode 100644 index 0000000..036af3f --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Banner.java @@ -0,0 +1,31 @@ +package com.frontendsource.drugstore.model; + +public class Banner { + String id; + String name; + String image; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BannerResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BannerResult.java new file mode 100644 index 0000000..a125ee5 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BannerResult.java @@ -0,0 +1,39 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +public class BannerResult { + @SerializedName("status") + int status; + @SerializedName("message") + String message; + @SerializedName("banners") + ListbannerList = new ArrayList<>(); + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getBannerList() { + return bannerList; + } + + public void setBannerList(List bannerList) { + this.bannerList = bannerList; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Bill.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Bill.java new file mode 100644 index 0000000..cbc0b88 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Bill.java @@ -0,0 +1,136 @@ +package com.frontendsource.drugstore.model; + +public class Bill { + String id; + String name; + String email; + String mobile; + String amount; + String title; + String bill; + String receipt; + String created_date; + String token; + String status; + String payment_status; + String message; + + public Bill(String id, String token) { + this.id = id; + this.token = token; + } + + public Bill(String name, String email, String mobile, String amount, String title, String bill, String token) { + this.name = name; + this.email = email; + this.mobile = mobile; + this.amount = amount; + this.title = title; + this.bill = bill; + this.token = token; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBill() { + return bill; + } + + public void setBill(String bill) { + this.bill = bill; + } + + public String getReceipt() { + return receipt; + } + + public void setReceipt(String receipt) { + this.receipt = receipt; + } + + public String getCreated_date() { + return created_date; + } + + public void setCreated_date(String created_date) { + this.created_date = created_date; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getPayment_status() { + return payment_status; + } + + public void setPayment_status(String payment_status) { + this.payment_status = payment_status; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BillResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BillResult.java new file mode 100644 index 0000000..4579579 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/BillResult.java @@ -0,0 +1,39 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +public class BillResult { + @SerializedName("status") + int status; + @SerializedName("message") + String message; + @SerializedName("bills") + Listbills = new ArrayList<>(); + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getBills() { + return bills; + } + + public void setBills(List bills) { + this.bills = bills; + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Cart.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Cart.java similarity index 97% rename from app/src/main/java/com/quintus/labs/drugstore/model/Cart.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Cart.java index 4e73fa2..c2c03e6 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Cart.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Cart.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; /** * Drug App diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Category.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Category.java new file mode 100644 index 0000000..c5b17ef --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Category.java @@ -0,0 +1,72 @@ +package com.frontendsource.drugstore.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class Category { + String id; + String category; + String cateimg; + String token; + String category_id; + List subCategory = new ArrayList<>(); + + public Category(String token, String category_id) { + this.token = token; + this.category_id = category_id; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getCateimg() { + return cateimg; + } + + public void setCateimg(String cateimg) { + this.cateimg = cateimg; + } + + public List getSubCategory() { + return subCategory; + } + + public void setSubCategory(List subCategory) { + this.subCategory = subCategory; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getCategory_id() { + return category_id; + } + + public void setCategory_id(String category_id) { + this.category_id = category_id; + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/CategoryResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/CategoryResult.java similarity index 60% rename from app/src/main/java/com/quintus/labs/drugstore/model/CategoryResult.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/CategoryResult.java index 2836c1c..6745bb4 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/CategoryResult.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/CategoryResult.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; import com.google.gson.annotations.SerializedName; @@ -7,10 +7,10 @@ public class CategoryResult { @SerializedName("categories") List categoryList; - @SerializedName("code") - int code; @SerializedName("status") - String status; + int status; + @SerializedName("message") + String message; public List getCategoryList() { return categoryList; @@ -20,19 +20,19 @@ public void setCategoryList(List categoryList) { this.categoryList = categoryList; } - public int getCode() { - return code; + public int getStatus() { + return status; } - public void setCode(int code) { - this.code = code; + public void setStatus(int status) { + this.status = status; } - public String getStatus() { - return status; + public String getMessage() { + return message; } - public void setStatus(String status) { - this.status = status; + public void setMessage(String message) { + this.message = message; } } diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Offer.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Offer.java similarity index 53% rename from app/src/main/java/com/quintus/labs/drugstore/model/Offer.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Offer.java index fab936c..525bad5 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Offer.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Offer.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; /** * Drug App @@ -7,13 +7,24 @@ * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com */ public class Offer { + String id; + String name; String image; - public Offer(String image) { - this.image = image; + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; } - public Offer() { + public void setName(String name) { + this.name = name; } public String getImage() { diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OfferResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OfferResult.java new file mode 100644 index 0000000..0fc460d --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OfferResult.java @@ -0,0 +1,39 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +public class OfferResult { + @SerializedName("status") + int status; + @SerializedName("message") + String message; + @SerializedName("offers") + ListofferList = new ArrayList<>(); + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getOfferList() { + return offerList; + } + + public void setOfferList(List offerList) { + this.offerList = offerList; + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Order.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Order.java similarity index 98% rename from app/src/main/java/com/quintus/labs/drugstore/model/Order.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Order.java index 6b6cbab..f5ea717 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Order.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Order.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; /** * Drug App diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/OrderItem.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrderItem.java similarity index 56% rename from app/src/main/java/com/quintus/labs/drugstore/model/OrderItem.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrderItem.java index 58a27e6..91947fb 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/OrderItem.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrderItem.java @@ -1,29 +1,29 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; public class OrderItem { String id; String orderid; - String itemname; - String itemquantity; String attribute; String currency; String itemImage; - String itemprice; - String itemtotal; String token; String order_id; + String itemName; + String itemQuantity; + String itemPrice; + String itemTotal; public OrderItem() { } - public OrderItem(String itemname, String itemquantity, String attribute, String currency, String itemImage, String itemprice, String itemtotal) { - this.itemname = itemname; - this.itemquantity = itemquantity; + public OrderItem(String itemName, String itemQuantity, String attribute, String currency, String itemImage, String itemPrice, String itemTotal) { + this.itemName = itemName; + this.itemQuantity = itemQuantity; this.attribute = attribute; this.currency = currency; this.itemImage = itemImage; - this.itemprice = itemprice; - this.itemtotal = itemtotal; + this.itemPrice = itemPrice; + this.itemTotal = itemTotal; } public String getId() { @@ -42,21 +42,7 @@ public void setOrderid(String orderid) { this.orderid = orderid; } - public String getItemname() { - return itemname; - } - - public void setItemname(String itemname) { - this.itemname = itemname; - } - - public String getItemquantity() { - return itemquantity; - } - public void setItemquantity(String itemquantity) { - this.itemquantity = itemquantity; - } public String getAttribute() { return attribute; @@ -78,25 +64,6 @@ public String getitemImage() { return itemImage; } - public void setitemImage(String itemImage) { - this.itemImage = itemImage; - } - - public String getItemprice() { - return itemprice; - } - - public void setItemprice(String itemprice) { - this.itemprice = itemprice; - } - - public String getItemtotal() { - return itemtotal; - } - - public void setItemtotal(String itemtotal) { - this.itemtotal = itemtotal; - } public String getItemImage() { return itemImage; @@ -121,4 +88,36 @@ public String getOrder_id() { public void setOrder_id(String order_id) { this.order_id = order_id; } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getItemQuantity() { + return itemQuantity; + } + + public void setItemQuantity(String itemQuantity) { + this.itemQuantity = itemQuantity; + } + + public String getItemPrice() { + return itemPrice; + } + + public void setItemPrice(String itemPrice) { + this.itemPrice = itemPrice; + } + + public String getItemTotal() { + return itemTotal; + } + + public void setItemTotal(String itemTotal) { + this.itemTotal = itemTotal; + } } diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/OrdersResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrdersResult.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/model/OrdersResult.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrdersResult.java index ab6e8ac..e94e0d3 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/OrdersResult.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/OrdersResult.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; import com.google.gson.annotations.SerializedName; diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PlaceOrder.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PlaceOrder.java new file mode 100644 index 0000000..122922b --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PlaceOrder.java @@ -0,0 +1,112 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class PlaceOrder { + @SerializedName("token") + String token; + @SerializedName("name") + String name; + @SerializedName("mobile") + String mobile; + @SerializedName("email") + String email; + @SerializedName("city") + String city; + @SerializedName("state") + String state; + @SerializedName("zip_code") + String zip_code; + @SerializedName("address") + String address; + + + @SerializedName("orderitems") + List orderitems; + + public PlaceOrder(String token, String name, String mobile, String email, String city, String state, String zip_code, String address, List orderitems) { + this.token = token; + this.name = name; + this.mobile = mobile; + this.email = email; + this.city = city; + this.state = state; + this.zip_code = zip_code; + this.address = address; + this.orderitems = orderitems; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getZip_code() { + return zip_code; + } + + public void setZip_code(String zip_code) { + this.zip_code = zip_code; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public List getOrderitems() { + return orderitems; + } + + public void setOrderitems(List orderitems) { + this.orderitems = orderitems; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Prescription.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Prescription.java new file mode 100644 index 0000000..1f86d44 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Prescription.java @@ -0,0 +1,118 @@ +package com.frontendsource.drugstore.model; + +public class Prescription { + String id; + String name; + String email; + String mobile; + String remark; + String title; + String image; + String created_date; + String token; + int status; + String message; + + public Prescription(String id, String token) { + this.id = id; + this.token = token; + } + + public Prescription(String name, String email, String mobile, String remark, String title, String image, String token) { + this.name = name; + this.email = email; + this.mobile = mobile; + this.remark = remark; + this.title = title; + this.image = image; + this.token = token; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public String getCreated_date() { + return created_date; + } + + public void setCreated_date(String created_date) { + this.created_date = created_date; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PrescriptionResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PrescriptionResult.java new file mode 100644 index 0000000..922a6cd --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/PrescriptionResult.java @@ -0,0 +1,39 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +public class PrescriptionResult { + @SerializedName("status") + int status; + @SerializedName("message") + String message; + @SerializedName("prescriptions") + Listprescriptions = new ArrayList<>(); + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public List getPrescriptions() { + return prescriptions; + } + + public void setPrescriptions(List prescriptions) { + this.prescriptions = prescriptions; + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Product.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Product.java similarity index 85% rename from app/src/main/java/com/quintus/labs/drugstore/model/Product.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Product.java index 7b9d7e2..7483d90 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Product.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Product.java @@ -1,4 +1,7 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; + +import java.util.ArrayList; +import java.util.List; /** * Drug App @@ -15,8 +18,8 @@ public class Product { String currency; String price; String discount; - String image; String homepage; + List images= new ArrayList<>(); public Product() { } @@ -86,12 +89,13 @@ public void setDiscount(String discount) { this.discount = discount; } - public String getImage() { - return image; + + public List getImages() { + return images; } - public void setImage(String image) { - this.image = image; + public void setImages(List images) { + this.images = images; } public String getHomepage() { diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductImage.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductImage.java new file mode 100644 index 0000000..92d5407 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductImage.java @@ -0,0 +1,22 @@ +package com.frontendsource.drugstore.model; + +public class ProductImage { + String id; + String image; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductResult.java new file mode 100644 index 0000000..17776e8 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/ProductResult.java @@ -0,0 +1,38 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class ProductResult { + @SerializedName("products") + List productList; + @SerializedName("status") + int status; + @SerializedName("message") + String message; + + public List getProductList() { + return productList; + } + + public void setProductList(List productList) { + this.productList = productList; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/SubCategory.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/SubCategory.java new file mode 100644 index 0000000..dd97053 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/SubCategory.java @@ -0,0 +1,46 @@ +package com.frontendsource.drugstore.model; + +/** + * Drug App + * https://github.com/quintuslabs/GroceryStore + * Created on 18-Feb-2019. + * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com + */ +public class SubCategory { + String id; + String category_id; + String sub_category_title; + String sub_category_img; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCategory_id() { + return category_id; + } + + public void setCategory_id(String category_id) { + this.category_id = category_id; + } + + public String getSub_category_title() { + return sub_category_title; + } + + public void setSub_category_title(String sub_category_title) { + this.sub_category_title = sub_category_title; + } + + public String getSub_category_img() { + return sub_category_img; + } + + public void setSub_category_img(String sub_category_img) { + this.sub_category_img = sub_category_img; + } +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Token.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Token.java similarity index 84% rename from app/src/main/java/com/quintus/labs/drugstore/model/Token.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Token.java index 1c598e6..3bfabd2 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Token.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/Token.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; public class Token { String token; diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/User.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/User.java similarity index 78% rename from app/src/main/java/com/quintus/labs/drugstore/model/User.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/User.java index f3b27da..349ad00 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/model/User.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/User.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.model; +package com.frontendsource.drugstore.model; /** * Drug App @@ -8,8 +8,8 @@ */ public class User { String id; - String fname; - String lname; + String name; + String mobile; String email; String password; @@ -19,6 +19,8 @@ public class User { String city; String zip; String token; + String otp; + String verified; String reset_code; String firebase_token; @@ -26,9 +28,8 @@ public class User { public User() { } - public User(String fname, String lname, String mobile, String password, String firebase_token) { - this.fname = fname; - this.lname = lname; + public User(String name, String mobile, String password, String firebase_token) { + this.name = name; this.mobile = mobile; this.password = password; this.firebase_token = firebase_token; @@ -40,9 +41,9 @@ public User(String mobile, String password, String firebase_token) { this.firebase_token = firebase_token; } - public User(String id, String fname, String mobile, String email, String address, String state, String city, String zip, String token) { + public User(String id, String name, String mobile, String email, String address, String state, String city, String zip, String token) { this.id = id; - this.fname = fname; + this.name = name; this.mobile = mobile; this.email = email; this.address = address; @@ -60,20 +61,12 @@ public void setId(String id) { this.id = id; } - public String getFname() { - return fname; - } - - public void setFname(String fname) { - this.fname = fname; + public String getName() { + return name; } - public String getLname() { - return lname; - } - - public void setLname(String lname) { - this.lname = lname; + public void setName(String name) { + this.name = name; } public String getMobile() { @@ -163,4 +156,20 @@ public String getFirebase_token() { public void setFirebase_token(String firebase_token) { this.firebase_token = firebase_token; } + + public String getOtp() { + return otp; + } + + public void setOtp(String otp) { + this.otp = otp; + } + + public String getVerified() { + return verified; + } + + public void setVerified(String verified) { + this.verified = verified; + } } diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/UserResult.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/UserResult.java new file mode 100644 index 0000000..06451a7 --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/model/UserResult.java @@ -0,0 +1,36 @@ +package com.frontendsource.drugstore.model; + +import com.google.gson.annotations.SerializedName; + +public class UserResult { + @SerializedName("data") + User user; + @SerializedName("message") + String message; + @SerializedName("status") + int status; + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } +} diff --git a/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/service/MyFirebaseMessagingService.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/service/MyFirebaseMessagingService.java new file mode 100644 index 0000000..7b6a9ca --- /dev/null +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/service/MyFirebaseMessagingService.java @@ -0,0 +1,192 @@ +package com.frontendsource.drugstore.service; + +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.media.RingtoneManager; +import android.net.Uri; +import android.os.Build; +import android.util.Log; + +import androidx.annotation.RequiresApi; +import androidx.core.app.NotificationCompat; + +import com.frontendsource.drugstore.R; +import com.frontendsource.drugstore.activity.MainActivity; +import com.frontendsource.drugstore.util.NotificationUtils; +import com.frontendsource.drugstore.util.localstorage.LocalStorage; +import com.google.firebase.messaging.FirebaseMessaging; +import com.google.firebase.messaging.FirebaseMessagingService; +import com.google.firebase.messaging.RemoteMessage; + + +import org.json.JSONObject; + +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class MyFirebaseMessagingService extends FirebaseMessagingService { + private static final String TAG = MyFirebaseMessagingService.class.getSimpleName(); + LocalStorage localStorage; + Intent intent; + private NotificationUtils notificationUtils; + + @RequiresApi(api = Build.VERSION_CODES.Q) + @Override + public void onMessageReceived(RemoteMessage remoteMessage) { + Log.e(TAG, "From: " + remoteMessage.getFrom()); + + if (remoteMessage == null) + return; + + // Check if message contains a notification payload. + if (remoteMessage.getNotification() != null) { + Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody()); + sendNotification(remoteMessage.getNotification().getTitle(),remoteMessage.getNotification().getBody()); + } + + // Check if message contains a data payload. + if (remoteMessage.getData().size() > 0) { + Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString()); + try { + JSONObject json = new JSONObject(remoteMessage.getData().toString()); + JSONObject data = json.getJSONObject("data"); + + Log.e(TAG, "Data Payload: " + json); + String title = data.getString("title"); + String message = data.getString("message"); + boolean isBackground = data.getBoolean("is_background"); + String imageUrl = data.getString("image"); + String timestamp = data.getString("timestamp"); + JSONObject payload = data.getJSONObject("payload"); + + Log.e(TAG, "title: " + title); + Log.e(TAG, "message: " + message); + Log.e(TAG, "isBackground: " + isBackground); + Log.e(TAG, "payload: " + payload.toString()); + Log.e(TAG, "imageUrl: " + imageUrl); + Log.e(TAG, "timestamp: " + timestamp); + + + + if (imageUrl != null) { + sendNotification(title, message, imageUrl); + + } else { + sendNotification(title,message); + } + + + } catch (Exception e) { + Log.e(TAG, "Exception: " + e.getMessage()); + } + } + } + + private void sendNotification(String title, String message, String imageUrl) { + Intent intent = new Intent(this, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, + PendingIntent.FLAG_IMMUTABLE); + + String channelId = "1000000000000"; + Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); + NotificationCompat.Builder notificationBuilder = + new NotificationCompat.Builder(this, channelId) + .setSmallIcon(R.mipmap.ic_launcher) + .setContentTitle(title) + .setContentText(message) + .setStyle(new NotificationCompat.BigPictureStyle() + .bigPicture(getBitmapFromURL(imageUrl)) + .bigLargeIcon(null)) + .setAutoCancel(true) + .setSound(defaultSoundUri) + .setContentIntent(pendingIntent); + + NotificationManager notificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + + // Since android Oreo notification channel is needed. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel channel = new NotificationChannel(channelId, + "Channel human readable title", + NotificationManager.IMPORTANCE_DEFAULT); + notificationManager.createNotificationChannel(channel); + } + + notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); + } + + + @Override + public void onNewToken(String token) { + Log.d(TAG, "Refreshed token: " + token); + + localStorage = new LocalStorage(getApplicationContext()); + FirebaseMessaging.getInstance().subscribeToTopic("global"); + localStorage.setFirebaseToken(token); + } + + + /** + * Create and show a simple notification containing the received FCM message. + * + * @param messageBody FCM message body received. + */ + private void sendNotification(String title,String messageBody) { + Intent intent = new Intent(this, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, + PendingIntent.FLAG_ONE_SHOT); + + String channelId = "1000000000000"; + Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); + NotificationCompat.Builder notificationBuilder = + new NotificationCompat.Builder(this, channelId) + .setSmallIcon(R.mipmap.ic_launcher) + .setContentTitle(title) + .setContentText(messageBody) + .setAutoCancel(true) + .setSound(defaultSoundUri) + .setContentIntent(pendingIntent); + + NotificationManager notificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + + // Since android Oreo notification channel is needed. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel channel = new NotificationChannel(channelId, + "Channel human readable title", + NotificationManager.IMPORTANCE_DEFAULT); + notificationManager.createNotificationChannel(channel); + } + + notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); + } + + /** + * Downloading push notification image before displaying it in + * the notification tray + */ + public Bitmap getBitmapFromURL(String strURL) { + try { + URL url = new URL(strURL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoInput(true); + connection.connect(); + InputStream input = connection.getInputStream(); + Bitmap myBitmap = BitmapFactory.decodeStream(input); + return myBitmap; + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + +} diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/CustomToast.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/CustomToast.java similarity index 93% rename from app/src/main/java/com/quintus/labs/drugstore/util/CustomToast.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/CustomToast.java index fa1d9ab..0255ff4 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/CustomToast.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/CustomToast.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.content.Context; @@ -9,10 +9,11 @@ import android.widget.TextView; import android.widget.Toast; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; + /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/FilePath.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FilePath.java similarity index 99% rename from app/src/main/java/com/quintus/labs/drugstore/util/FilePath.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FilePath.java index b0c3545..ddf5480 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/FilePath.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FilePath.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; /** * Created by Manish on 10/2/2016. diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/FileUtils.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FileUtils.java similarity index 99% rename from app/src/main/java/com/quintus/labs/drugstore/util/FileUtils.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FileUtils.java index 6df0a87..af4eb48 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/FileUtils.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/FileUtils.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.content.ContentResolver; import android.content.ContentUris; diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/LocalStorageProvider.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocalStorageProvider.java similarity index 99% rename from app/src/main/java/com/quintus/labs/drugstore/util/LocalStorageProvider.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocalStorageProvider.java index 44c534a..7e61d8e 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/LocalStorageProvider.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocalStorageProvider.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.annotation.SuppressLint; import android.content.res.AssetFileDescriptor; @@ -20,7 +20,7 @@ import androidx.annotation.RequiresApi; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; import java.io.File; import java.io.FileNotFoundException; diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/LocaleHelper.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocaleHelper.java similarity index 98% rename from app/src/main/java/com/quintus/labs/drugstore/util/LocaleHelper.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocaleHelper.java index 68a830e..9d1f847 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/LocaleHelper.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/LocaleHelper.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.annotation.TargetApi; import android.content.Context; diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/NetworkCheck.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NetworkCheck.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/util/NetworkCheck.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NetworkCheck.java index 0013709..ec414f6 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/NetworkCheck.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NetworkCheck.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; /** * Created by Jaison diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/NotificationHelper.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationHelper.java similarity index 53% rename from app/src/main/java/com/quintus/labs/drugstore/util/NotificationHelper.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationHelper.java index 2953d34..5d616bb 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/NotificationHelper.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationHelper.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.annotation.SuppressLint; import android.app.NotificationChannel; @@ -9,7 +9,6 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; -import android.os.Build; import android.os.StrictMode; import android.provider.Settings; import android.text.Html; @@ -17,9 +16,9 @@ import android.util.Patterns; import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationManagerCompat; -import com.quintus.labs.drugstore.R; + +import com.frontendsource.drugstore.R; import java.io.IOException; import java.io.InputStream; @@ -40,9 +39,8 @@ public class NotificationHelper { public static final String NOTIFICATION_CHANNEL_ID = "10001"; - private static final String CHANNEL_ID = "8" ; private Context mContext; - private NotificationManagerCompat mNotificationManager; + private NotificationManager mNotificationManager; private NotificationCompat.Builder mBuilder; public NotificationHelper(Context context) { @@ -65,7 +63,7 @@ public static long getTimeMilliSec(String timeStamp) { */ public void createNotification(String title, String message) { - mBuilder = new NotificationCompat.Builder(mContext,NOTIFICATION_CHANNEL_ID); + mBuilder = new NotificationCompat.Builder(mContext); mBuilder.setSmallIcon(R.mipmap.ic_launcher); mBuilder.setContentTitle(title) .setContentText(message) @@ -73,19 +71,19 @@ public void createNotification(String title, String message) { .setPriority(PRIORITY_MAX) .setSound(Settings.System.DEFAULT_NOTIFICATION_URI); - mNotificationManager = NotificationManagerCompat.from(mContext); - - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "Notification Channel"; - String description = "Notification Description"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - // Register the channel with the system; you can't change the importance - // or other notification behaviors after this - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); + mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_MAX; + @SuppressLint("WrongConstant") + NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance); + notificationChannel.enableLights(true); + notificationChannel.setLightColor(Color.RED); + notificationChannel.enableVibration(true); + notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); + assert mNotificationManager != null; + mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + mNotificationManager.createNotificationChannel(notificationChannel); } assert mNotificationManager != null; mNotificationManager.notify(0 /* Request Code */, mBuilder.build()); @@ -96,34 +94,39 @@ public void createNotification(String title, String message) { */ public void createNotification(String title, String message, String timeStamp, Intent resultIntent) { + /**Creates an explicit intent for an Activity in your app**/ + // resultIntent = new Intent(mContext , targetActivity.class); + resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, resultIntent, 0); + PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext, + 0 /* Request code */, resultIntent, + PendingIntent.FLAG_UPDATE_CURRENT); - mBuilder = new NotificationCompat.Builder(mContext,NOTIFICATION_CHANNEL_ID); + + mBuilder = new NotificationCompat.Builder(mContext); mBuilder.setSmallIcon(R.mipmap.ic_launcher); mBuilder.setContentTitle(title) .setContentText(message) .setAutoCancel(false) .setPriority(PRIORITY_MAX) .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) - .setContentIntent(pendingIntent); - - mNotificationManager = NotificationManagerCompat.from(mContext); - + .setContentIntent(resultPendingIntent); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "Notification Channel"; - String description = "Notification Description"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); + mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_MAX; + @SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance); + notificationChannel.enableLights(true); + notificationChannel.setLightColor(Color.RED); + notificationChannel.enableVibration(true); + notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); + assert mNotificationManager != null; + mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + mNotificationManager.createNotificationChannel(notificationChannel); } assert mNotificationManager != null; mNotificationManager.notify(0 /* Request Code */, mBuilder.build()); - } /** @@ -131,29 +134,36 @@ public void createNotification(String title, String message, String timeStamp, I */ public void createNotification(String title, String message, int icon, Intent resultIntent) { - resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, resultIntent, 0); + /**Creates an explicit intent for an Activity in your app**/ + // resultIntent = new Intent(mContext , targetActivity.class); + resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext, + 0 /* Request code */, resultIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + - mBuilder = new NotificationCompat.Builder(mContext,NOTIFICATION_CHANNEL_ID); + mBuilder = new NotificationCompat.Builder(mContext); mBuilder.setSmallIcon(icon); mBuilder.setContentTitle(title) .setContentText(message) .setAutoCancel(false) .setPriority(PRIORITY_MAX) .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) - .setContentIntent(pendingIntent); - - mNotificationManager = NotificationManagerCompat.from(mContext); - + .setContentIntent(resultPendingIntent); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "Notification Channel"; - String description = "Notification Description"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); + mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_MAX; + @SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance); + notificationChannel.enableLights(true); + notificationChannel.setLightColor(Color.RED); + notificationChannel.enableVibration(true); + notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); + assert mNotificationManager != null; + mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + mNotificationManager.createNotificationChannel(notificationChannel); } assert mNotificationManager != null; mNotificationManager.notify(0 /* Request Code */, mBuilder.build()); @@ -201,26 +211,29 @@ private void showSmallNotification(NotificationCompat.Builder mBuilder, int icon mBuilder.setContentTitle(title) .setContentText(message) .setAutoCancel(false) - .setPriority(PRIORITY_MAX) .setWhen(getTimeMilliSec(timeStamp)) .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) + .setPriority(PRIORITY_MAX) .setContentIntent(resultPendingIntent); - mNotificationManager = NotificationManagerCompat.from(mContext); + mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "Notification Channel"; - String description = "Notification Description"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_MAX; + @SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance); + notificationChannel.enableLights(true); + notificationChannel.setLightColor(Color.RED); + notificationChannel.enableVibration(true); + notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); + assert mNotificationManager != null; + mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + mNotificationManager.createNotificationChannel(notificationChannel); } assert mNotificationManager != null; mNotificationManager.notify(0 /* Request Code */, mBuilder.build()); + } private void showBigNotification(Bitmap bitmap, NotificationCompat.Builder mBuilder, int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent) { @@ -230,32 +243,36 @@ private void showBigNotification(Bitmap bitmap, NotificationCompat.Builder mBuil bigPictureStyle.setSummaryText(Html.fromHtml(message).toString()); bigPictureStyle.bigPicture(bitmap); - - mBuilder.setSmallIcon(icon); - mBuilder.setContentTitle(title) - .setContentText(message) - .setAutoCancel(false) + mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0) + .setAutoCancel(true) + .setContentTitle(title) + .setContentIntent(resultPendingIntent) .setStyle(bigPictureStyle) + .setSmallIcon(icon) + .setWhen(getTimeMilliSec(timeStamp)) .setPriority(PRIORITY_MAX) .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), icon)) - .setWhen(getTimeMilliSec(timeStamp)) - .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) - .setContentIntent(resultPendingIntent); + .setContentText(message) + .build(); - mNotificationManager = NotificationManagerCompat.from(mContext); + mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - CharSequence name = "Notification Channel"; - String description = "Notification Description"; - int importance = NotificationManager.IMPORTANCE_HIGH; - NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); - channel.setDescription(description); - NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.createNotificationChannel(channel); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_MAX; + @SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance); + notificationChannel.enableLights(true); + notificationChannel.setLightColor(Color.RED); + notificationChannel.enableVibration(true); + notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); + assert mNotificationManager != null; + mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + mNotificationManager.createNotificationChannel(notificationChannel); } assert mNotificationManager != null; mNotificationManager.notify(0 /* Request Code */, mBuilder.build()); + + } /** diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/NotificationUtils.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationUtils.java similarity index 98% rename from app/src/main/java/com/quintus/labs/drugstore/util/NotificationUtils.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationUtils.java index 4d637d4..f9c9189 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/NotificationUtils.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/NotificationUtils.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.app.ActivityManager; import android.app.Notification; @@ -23,7 +23,8 @@ import androidx.annotation.RequiresApi; import androidx.core.app.NotificationCompat; -import com.quintus.labs.drugstore.R; + +import com.frontendsource.drugstore.R; import java.io.IOException; import java.io.InputStream; @@ -118,7 +119,7 @@ public void showNotificationMessage(final String title, final String message, fi ); final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( - mContext, NOTIFICATION_CHANNEL_ID); + mContext); final Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + mContext.getPackageName() + "/raw/notification"); diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/SlideAnimationUtil.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/SlideAnimationUtil.java similarity index 94% rename from app/src/main/java/com/quintus/labs/drugstore/util/SlideAnimationUtil.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/SlideAnimationUtil.java index 31a1aa0..1df438b 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/SlideAnimationUtil.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/SlideAnimationUtil.java @@ -1,13 +1,14 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; import android.content.Context; import android.view.View; import android.view.animation.AnimationUtils; -import com.quintus.labs.drugstore.R; +import com.frontendsource.drugstore.R; + /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/Utils.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/Utils.java similarity index 86% rename from app/src/main/java/com/quintus/labs/drugstore/util/Utils.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/Utils.java index ab26ca2..c72c65e 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/Utils.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/Utils.java @@ -1,9 +1,10 @@ -package com.quintus.labs.drugstore.util; +package com.frontendsource.drugstore.util; -import com.quintus.labs.drugstore.api.clients.RestClient; + +import com.frontendsource.drugstore.api.clients.RestClient; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/localstorage/LocalStorage.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/localstorage/LocalStorage.java similarity index 98% rename from app/src/main/java/com/quintus/labs/drugstore/util/localstorage/LocalStorage.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/localstorage/LocalStorage.java index ee9506a..291ead0 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/localstorage/LocalStorage.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/localstorage/LocalStorage.java @@ -1,11 +1,11 @@ -package com.quintus.labs.drugstore.util.localstorage; +package com.frontendsource.drugstore.util.localstorage; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** - * Drug App + * Grocery App * https://github.com/quintuslabs/GroceryStore * Created on 18-Feb-2019. * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/permission/Constants.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/Constants.java similarity index 97% rename from app/src/main/java/com/quintus/labs/drugstore/util/permission/Constants.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/Constants.java index 4b1fb5d..667a4eb 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/permission/Constants.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/Constants.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util.permission; +package com.frontendsource.drugstore.util.permission; import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; diff --git a/app/src/main/java/com/quintus/labs/drugstore/util/permission/PermissionCheck.java b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/PermissionCheck.java similarity index 96% rename from app/src/main/java/com/quintus/labs/drugstore/util/permission/PermissionCheck.java rename to Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/PermissionCheck.java index 14ffef9..9958a43 100644 --- a/app/src/main/java/com/quintus/labs/drugstore/util/permission/PermissionCheck.java +++ b/Android-SourceCode/app/src/main/java/com/frontendsource/drugstore/util/permission/PermissionCheck.java @@ -1,4 +1,4 @@ -package com.quintus.labs.drugstore.util.permission; +package com.frontendsource.drugstore.util.permission; import android.Manifest; import android.app.Activity; @@ -69,6 +69,7 @@ public void onClick(DialogInterface dialogInterface, int i) { @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case MY_PERMISSIONS_REQUEST_CODE: { // When request is cancelled, the results array are empty diff --git a/app/src/main/res/anim/check_animation.xml b/Android-SourceCode/app/src/main/res/anim/check_animation.xml similarity index 100% rename from app/src/main/res/anim/check_animation.xml rename to Android-SourceCode/app/src/main/res/anim/check_animation.xml diff --git a/app/src/main/res/anim/cycle.xml b/Android-SourceCode/app/src/main/res/anim/cycle.xml similarity index 100% rename from app/src/main/res/anim/cycle.xml rename to Android-SourceCode/app/src/main/res/anim/cycle.xml diff --git a/app/src/main/res/anim/left_enter.xml b/Android-SourceCode/app/src/main/res/anim/left_enter.xml similarity index 100% rename from app/src/main/res/anim/left_enter.xml rename to Android-SourceCode/app/src/main/res/anim/left_enter.xml diff --git a/app/src/main/res/anim/left_out.xml b/Android-SourceCode/app/src/main/res/anim/left_out.xml similarity index 100% rename from app/src/main/res/anim/left_out.xml rename to Android-SourceCode/app/src/main/res/anim/left_out.xml diff --git a/app/src/main/res/anim/right_enter.xml b/Android-SourceCode/app/src/main/res/anim/right_enter.xml similarity index 100% rename from app/src/main/res/anim/right_enter.xml rename to Android-SourceCode/app/src/main/res/anim/right_enter.xml diff --git a/app/src/main/res/anim/right_out.xml b/Android-SourceCode/app/src/main/res/anim/right_out.xml similarity index 100% rename from app/src/main/res/anim/right_out.xml rename to Android-SourceCode/app/src/main/res/anim/right_out.xml diff --git a/app/src/main/res/anim/shake.xml b/Android-SourceCode/app/src/main/res/anim/shake.xml similarity index 100% rename from app/src/main/res/anim/shake.xml rename to Android-SourceCode/app/src/main/res/anim/shake.xml diff --git a/app/src/main/res/anim/slide_from_left.xml b/Android-SourceCode/app/src/main/res/anim/slide_from_left.xml similarity index 100% rename from app/src/main/res/anim/slide_from_left.xml rename to Android-SourceCode/app/src/main/res/anim/slide_from_left.xml diff --git a/app/src/main/res/anim/slide_from_right.xml b/Android-SourceCode/app/src/main/res/anim/slide_from_right.xml similarity index 100% rename from app/src/main/res/anim/slide_from_right.xml rename to Android-SourceCode/app/src/main/res/anim/slide_from_right.xml diff --git a/app/src/main/res/anim/slide_to_left.xml b/Android-SourceCode/app/src/main/res/anim/slide_to_left.xml similarity index 100% rename from app/src/main/res/anim/slide_to_left.xml rename to Android-SourceCode/app/src/main/res/anim/slide_to_left.xml diff --git a/app/src/main/res/anim/slide_to_right.xml b/Android-SourceCode/app/src/main/res/anim/slide_to_right.xml similarity index 100% rename from app/src/main/res/anim/slide_to_right.xml rename to Android-SourceCode/app/src/main/res/anim/slide_to_right.xml diff --git a/app/src/main/res/drawable-hdpi/confirm_password.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/confirm_password.png similarity index 100% rename from app/src/main/res/drawable-hdpi/confirm_password.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/confirm_password.png diff --git a/app/src/main/res/drawable-hdpi/email.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/email.png similarity index 100% rename from app/src/main/res/drawable-hdpi/email.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/email.png diff --git a/app/src/main/res/drawable-hdpi/error.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/error.png similarity index 100% rename from app/src/main/res/drawable-hdpi/error.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/error.png diff --git a/app/src/main/res/drawable-hdpi/ic_launcher.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_launcher.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-hdpi/location.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/location.png similarity index 100% rename from app/src/main/res/drawable-hdpi/location.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/location.png diff --git a/app/src/main/res/drawable-hdpi/password.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/password.png similarity index 100% rename from app/src/main/res/drawable-hdpi/password.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/password.png diff --git a/app/src/main/res/drawable-hdpi/phone.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/phone.png similarity index 100% rename from app/src/main/res/drawable-hdpi/phone.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/phone.png diff --git a/app/src/main/res/drawable-hdpi/rounded_corner.xml b/Android-SourceCode/app/src/main/res/drawable-hdpi/rounded_corner.xml similarity index 100% rename from app/src/main/res/drawable-hdpi/rounded_corner.xml rename to Android-SourceCode/app/src/main/res/drawable-hdpi/rounded_corner.xml diff --git a/app/src/main/res/drawable-hdpi/user.png b/Android-SourceCode/app/src/main/res/drawable-hdpi/user.png similarity index 100% rename from app/src/main/res/drawable-hdpi/user.png rename to Android-SourceCode/app/src/main/res/drawable-hdpi/user.png diff --git a/app/src/main/res/drawable-mdpi/ic_launcher.png b/Android-SourceCode/app/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_launcher.png rename to Android-SourceCode/app/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-v21/animated_check.xml b/Android-SourceCode/app/src/main/res/drawable-v21/animated_check.xml similarity index 100% rename from app/src/main/res/drawable-v21/animated_check.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/animated_check.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_camera.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_camera.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_camera.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_camera.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_gallery.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_gallery.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_gallery.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_gallery.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_manage.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_manage.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_manage.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_manage.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_send.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_send.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_send.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_send.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_share.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_share.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_share.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_share.xml diff --git a/app/src/main/res/drawable-v21/ic_menu_slideshow.xml b/Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_slideshow.xml similarity index 100% rename from app/src/main/res/drawable-v21/ic_menu_slideshow.xml rename to Android-SourceCode/app/src/main/res/drawable-v21/ic_menu_slideshow.xml diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android-SourceCode/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to Android-SourceCode/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher.png b/Android-SourceCode/app/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_launcher.png rename to Android-SourceCode/app/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/Android-SourceCode/app/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_launcher.png rename to Android-SourceCode/app/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-xxhdpi/icon.png b/Android-SourceCode/app/src/main/res/drawable-xxhdpi/icon.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/icon.png rename to Android-SourceCode/app/src/main/res/drawable-xxhdpi/icon.png diff --git a/app/src/main/res/drawable/active_dot.xml b/Android-SourceCode/app/src/main/res/drawable/active_dot.xml similarity index 100% rename from app/src/main/res/drawable/active_dot.xml rename to Android-SourceCode/app/src/main/res/drawable/active_dot.xml diff --git a/app/src/main/res/drawable/add_to_cart_textview_bg.xml b/Android-SourceCode/app/src/main/res/drawable/add_to_cart_textview_bg.xml similarity index 100% rename from app/src/main/res/drawable/add_to_cart_textview_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/add_to_cart_textview_bg.xml diff --git a/app/src/main/res/drawable/addcart.png b/Android-SourceCode/app/src/main/res/drawable/addcart.png similarity index 100% rename from app/src/main/res/drawable/addcart.png rename to Android-SourceCode/app/src/main/res/drawable/addcart.png diff --git a/app/src/main/res/drawable/animated_check.xml b/Android-SourceCode/app/src/main/res/drawable/animated_check.xml similarity index 100% rename from app/src/main/res/drawable/animated_check.xml rename to Android-SourceCode/app/src/main/res/drawable/animated_check.xml diff --git a/app/src/main/res/drawable/arrow.png b/Android-SourceCode/app/src/main/res/drawable/arrow.png similarity index 100% rename from app/src/main/res/drawable/arrow.png rename to Android-SourceCode/app/src/main/res/drawable/arrow.png diff --git a/app/src/main/res/drawable/arrow1.png b/Android-SourceCode/app/src/main/res/drawable/arrow1.png similarity index 100% rename from app/src/main/res/drawable/arrow1.png rename to Android-SourceCode/app/src/main/res/drawable/arrow1.png diff --git a/app/src/main/res/drawable/arrow2.png b/Android-SourceCode/app/src/main/res/drawable/arrow2.png similarity index 100% rename from app/src/main/res/drawable/arrow2.png rename to Android-SourceCode/app/src/main/res/drawable/arrow2.png diff --git a/app/src/main/res/drawable/bag.png b/Android-SourceCode/app/src/main/res/drawable/bag.png similarity index 100% rename from app/src/main/res/drawable/bag.png rename to Android-SourceCode/app/src/main/res/drawable/bag.png diff --git a/app/src/main/res/drawable/bg_ccv.xml b/Android-SourceCode/app/src/main/res/drawable/bg_ccv.xml similarity index 100% rename from app/src/main/res/drawable/bg_ccv.xml rename to Android-SourceCode/app/src/main/res/drawable/bg_ccv.xml diff --git a/app/src/main/res/drawable/bg_pay.xml b/Android-SourceCode/app/src/main/res/drawable/bg_pay.xml similarity index 100% rename from app/src/main/res/drawable/bg_pay.xml rename to Android-SourceCode/app/src/main/res/drawable/bg_pay.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/bg_select_image.xml b/Android-SourceCode/app/src/main/res/drawable/bg_select_image.xml new file mode 100644 index 0000000..2d678eb --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/bg_select_image.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_checkout_bg.xml b/Android-SourceCode/app/src/main/res/drawable/button_checkout_bg.xml similarity index 100% rename from app/src/main/res/drawable/button_checkout_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/button_checkout_bg.xml diff --git a/app/src/main/res/drawable/button_gradient_bg.xml b/Android-SourceCode/app/src/main/res/drawable/button_gradient_bg.xml similarity index 100% rename from app/src/main/res/drawable/button_gradient_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/button_gradient_bg.xml diff --git a/app/src/main/res/drawable/cart.png b/Android-SourceCode/app/src/main/res/drawable/cart.png similarity index 100% rename from app/src/main/res/drawable/cart.png rename to Android-SourceCode/app/src/main/res/drawable/cart.png diff --git a/app/src/main/res/drawable/category_textview_bg.xml b/Android-SourceCode/app/src/main/res/drawable/category_textview_bg.xml similarity index 100% rename from app/src/main/res/drawable/category_textview_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/category_textview_bg.xml diff --git a/app/src/main/res/drawable/check_mark.xml b/Android-SourceCode/app/src/main/res/drawable/check_mark.xml similarity index 100% rename from app/src/main/res/drawable/check_mark.xml rename to Android-SourceCode/app/src/main/res/drawable/check_mark.xml diff --git a/app/src/main/res/drawable/circle_shape.xml b/Android-SourceCode/app/src/main/res/drawable/circle_shape.xml similarity index 100% rename from app/src/main/res/drawable/circle_shape.xml rename to Android-SourceCode/app/src/main/res/drawable/circle_shape.xml diff --git a/app/src/main/res/drawable/close.xml b/Android-SourceCode/app/src/main/res/drawable/close.xml similarity index 100% rename from app/src/main/res/drawable/close.xml rename to Android-SourceCode/app/src/main/res/drawable/close.xml diff --git a/app/src/main/res/drawable/dialog_bg.xml b/Android-SourceCode/app/src/main/res/drawable/dialog_bg.xml similarity index 100% rename from app/src/main/res/drawable/dialog_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/dialog_bg.xml diff --git a/app/src/main/res/drawable/doctor.png b/Android-SourceCode/app/src/main/res/drawable/doctor.png similarity index 100% rename from app/src/main/res/drawable/doctor.png rename to Android-SourceCode/app/src/main/res/drawable/doctor.png diff --git a/app/src/main/res/drawable/empty_cart_img.png b/Android-SourceCode/app/src/main/res/drawable/empty_cart_img.png similarity index 100% rename from app/src/main/res/drawable/empty_cart_img.png rename to Android-SourceCode/app/src/main/res/drawable/empty_cart_img.png diff --git a/app/src/main/res/drawable/gradient_bg.xml b/Android-SourceCode/app/src/main/res/drawable/gradient_bg.xml similarity index 100% rename from app/src/main/res/drawable/gradient_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/gradient_bg.xml diff --git a/app/src/main/res/drawable/happy_shopping.jpg b/Android-SourceCode/app/src/main/res/drawable/happy_shopping.jpg similarity index 100% rename from app/src/main/res/drawable/happy_shopping.jpg rename to Android-SourceCode/app/src/main/res/drawable/happy_shopping.jpg diff --git a/app/src/main/res/drawable/ic_arrow_back_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_arrow_back_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_arrow_back_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_arrow_back_black_24dp.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_audio.xml b/Android-SourceCode/app/src/main/res/drawable/ic_audio.xml new file mode 100644 index 0000000..a7d8c9c --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_audio.xml @@ -0,0 +1,9 @@ + + + diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_baseline_add_circle_24.xml b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_add_circle_24.xml new file mode 100644 index 0000000..0e2f8a5 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_add_circle_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_baseline_assignment_24.xml b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_assignment_24.xml new file mode 100644 index 0000000..e1e1cb5 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_assignment_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_close_white.xml b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_close_white.xml similarity index 100% rename from app/src/main/res/drawable/ic_baseline_close_white.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_baseline_close_white.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_baseline_photo_library_24.xml b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_photo_library_24.xml new file mode 100644 index 0000000..34a420f --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_baseline_photo_library_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_camera.xml b/Android-SourceCode/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..f05d7bd --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_cart_clear.xml b/Android-SourceCode/app/src/main/res/drawable/ic_cart_clear.xml similarity index 100% rename from app/src/main/res/drawable/ic_cart_clear.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_cart_clear.xml diff --git a/app/src/main/res/drawable/ic_clear_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_clear_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_clear_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_clear_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_close_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_close_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_close_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_close_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_confirm.xml b/Android-SourceCode/app/src/main/res/drawable/ic_confirm.xml similarity index 100% rename from app/src/main/res/drawable/ic_confirm.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_confirm.xml diff --git a/app/src/main/res/drawable/ic_confirm_selected.xml b/Android-SourceCode/app/src/main/res/drawable/ic_confirm_selected.xml similarity index 100% rename from app/src/main/res/drawable/ic_confirm_selected.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_confirm_selected.xml diff --git a/app/src/main/res/drawable/ic_confirm_unselect.xml b/Android-SourceCode/app/src/main/res/drawable/ic_confirm_unselect.xml similarity index 100% rename from app/src/main/res/drawable/ic_confirm_unselect.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_confirm_unselect.xml diff --git a/app/src/main/res/drawable/ic_coupon.xml b/Android-SourceCode/app/src/main/res/drawable/ic_coupon.xml similarity index 100% rename from app/src/main/res/drawable/ic_coupon.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_coupon.xml diff --git a/app/src/main/res/drawable/ic_credit_card.xml b/Android-SourceCode/app/src/main/res/drawable/ic_credit_card.xml similarity index 100% rename from app/src/main/res/drawable/ic_credit_card.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_credit_card.xml diff --git a/app/src/main/res/drawable/ic_credit_card_select.xml b/Android-SourceCode/app/src/main/res/drawable/ic_credit_card_select.xml similarity index 100% rename from app/src/main/res/drawable/ic_credit_card_select.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_credit_card_select.xml diff --git a/app/src/main/res/drawable/ic_credit_card_unselect.xml b/Android-SourceCode/app/src/main/res/drawable/ic_credit_card_unselect.xml similarity index 100% rename from app/src/main/res/drawable/ic_credit_card_unselect.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_credit_card_unselect.xml diff --git a/app/src/main/res/drawable/ic_delete_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_delete_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_delete_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_delete_black_24dp.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_dir.xml b/Android-SourceCode/app/src/main/res/drawable/ic_dir.xml new file mode 100644 index 0000000..3eaf799 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_dir.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_discount.xml b/Android-SourceCode/app/src/main/res/drawable/ic_discount.xml similarity index 100% rename from app/src/main/res/drawable/ic_discount.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_discount.xml diff --git a/app/src/main/res/drawable/ic_ecommerce.xml b/Android-SourceCode/app/src/main/res/drawable/ic_ecommerce.xml similarity index 100% rename from app/src/main/res/drawable/ic_ecommerce.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_ecommerce.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_file.xml b/Android-SourceCode/app/src/main/res/drawable/ic_file.xml new file mode 100644 index 0000000..f830c74 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_file.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_goods.xml b/Android-SourceCode/app/src/main/res/drawable/ic_goods.xml similarity index 100% rename from app/src/main/res/drawable/ic_goods.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_goods.xml diff --git a/app/src/main/res/drawable/ic_grid.xml b/Android-SourceCode/app/src/main/res/drawable/ic_grid.xml similarity index 100% rename from app/src/main/res/drawable/ic_grid.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_grid.xml diff --git a/app/src/main/res/drawable/ic_home.xml b/Android-SourceCode/app/src/main/res/drawable/ic_home.xml similarity index 100% rename from app/src/main/res/drawable/ic_home.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_home.xml diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/Android-SourceCode/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from app/src/main/res/drawable/ic_launcher_background.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/app/src/main/res/drawable/ic_left_arrow.xml b/Android-SourceCode/app/src/main/res/drawable/ic_left_arrow.xml similarity index 100% rename from app/src/main/res/drawable/ic_left_arrow.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_left_arrow.xml diff --git a/app/src/main/res/drawable/ic_lettuce.xml b/Android-SourceCode/app/src/main/res/drawable/ic_lettuce.xml similarity index 100% rename from app/src/main/res/drawable/ic_lettuce.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_lettuce.xml diff --git a/app/src/main/res/drawable/ic_list.xml b/Android-SourceCode/app/src/main/res/drawable/ic_list.xml similarity index 100% rename from app/src/main/res/drawable/ic_list.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_list.xml diff --git a/app/src/main/res/drawable/ic_listed_items.xml b/Android-SourceCode/app/src/main/res/drawable/ic_listed_items.xml similarity index 100% rename from app/src/main/res/drawable/ic_listed_items.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_listed_items.xml diff --git a/app/src/main/res/drawable/ic_male.xml b/Android-SourceCode/app/src/main/res/drawable/ic_male.xml similarity index 100% rename from app/src/main/res/drawable/ic_male.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_male.xml diff --git a/app/src/main/res/drawable/ic_minus.xml b/Android-SourceCode/app/src/main/res/drawable/ic_minus.xml similarity index 100% rename from app/src/main/res/drawable/ic_minus.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_minus.xml diff --git a/app/src/main/res/drawable/ic_options.xml b/Android-SourceCode/app/src/main/res/drawable/ic_options.xml similarity index 100% rename from app/src/main/res/drawable/ic_options.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_options.xml diff --git a/app/src/main/res/drawable/ic_pay_per_click.xml b/Android-SourceCode/app/src/main/res/drawable/ic_pay_per_click.xml similarity index 100% rename from app/src/main/res/drawable/ic_pay_per_click.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_pay_per_click.xml diff --git a/app/src/main/res/drawable/ic_placeholder.xml b/Android-SourceCode/app/src/main/res/drawable/ic_placeholder.xml similarity index 100% rename from app/src/main/res/drawable/ic_placeholder.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_placeholder.xml diff --git a/app/src/main/res/drawable/ic_placeholder_select.xml b/Android-SourceCode/app/src/main/res/drawable/ic_placeholder_select.xml similarity index 100% rename from app/src/main/res/drawable/ic_placeholder_select.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_placeholder_select.xml diff --git a/app/src/main/res/drawable/ic_placeholder_unselect.xml b/Android-SourceCode/app/src/main/res/drawable/ic_placeholder_unselect.xml similarity index 100% rename from app/src/main/res/drawable/ic_placeholder_unselect.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_placeholder_unselect.xml diff --git a/app/src/main/res/drawable/ic_plus.xml b/Android-SourceCode/app/src/main/res/drawable/ic_plus.xml similarity index 100% rename from app/src/main/res/drawable/ic_plus.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_plus.xml diff --git a/app/src/main/res/drawable/ic_power_settings_new_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_power_settings_new_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_power_settings_new_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_power_settings_new_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_provider.png b/Android-SourceCode/app/src/main/res/drawable/ic_provider.png similarity index 100% rename from app/src/main/res/drawable/ic_provider.png rename to Android-SourceCode/app/src/main/res/drawable/ic_provider.png diff --git a/app/src/main/res/drawable/ic_search_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_search_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_search_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_search_black_24dp.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_selected.xml b/Android-SourceCode/app/src/main/res/drawable/ic_selected.xml new file mode 100644 index 0000000..6c109f1 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shopping_basket.xml b/Android-SourceCode/app/src/main/res/drawable/ic_shopping_basket.xml similarity index 100% rename from app/src/main/res/drawable/ic_shopping_basket.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_shopping_basket.xml diff --git a/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml b/Android-SourceCode/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_shuffle.xml b/Android-SourceCode/app/src/main/res/drawable/ic_shuffle.xml similarity index 100% rename from app/src/main/res/drawable/ic_shuffle.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_shuffle.xml diff --git a/app/src/main/res/drawable/ic_stars.xml b/Android-SourceCode/app/src/main/res/drawable/ic_stars.xml similarity index 100% rename from app/src/main/res/drawable/ic_stars.xml rename to Android-SourceCode/app/src/main/res/drawable/ic_stars.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/ic_videocam.xml b/Android-SourceCode/app/src/main/res/drawable/ic_videocam.xml new file mode 100644 index 0000000..dfc89ad --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/ic_videocam.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon1.png b/Android-SourceCode/app/src/main/res/drawable/icon1.png similarity index 100% rename from app/src/main/res/drawable/icon1.png rename to Android-SourceCode/app/src/main/res/drawable/icon1.png diff --git a/app/src/main/res/drawable/icon2.png b/Android-SourceCode/app/src/main/res/drawable/icon2.png similarity index 100% rename from app/src/main/res/drawable/icon2.png rename to Android-SourceCode/app/src/main/res/drawable/icon2.png diff --git a/app/src/main/res/drawable/icon3.png b/Android-SourceCode/app/src/main/res/drawable/icon3.png similarity index 100% rename from app/src/main/res/drawable/icon3.png rename to Android-SourceCode/app/src/main/res/drawable/icon3.png diff --git a/app/src/main/res/drawable/img.jpg b/Android-SourceCode/app/src/main/res/drawable/img.jpg similarity index 100% rename from app/src/main/res/drawable/img.jpg rename to Android-SourceCode/app/src/main/res/drawable/img.jpg diff --git a/app/src/main/res/drawable/loginbutton_selector.xml b/Android-SourceCode/app/src/main/res/drawable/loginbutton_selector.xml similarity index 100% rename from app/src/main/res/drawable/loginbutton_selector.xml rename to Android-SourceCode/app/src/main/res/drawable/loginbutton_selector.xml diff --git a/app/src/main/res/drawable/logo.png b/Android-SourceCode/app/src/main/res/drawable/logo.png similarity index 100% rename from app/src/main/res/drawable/logo.png rename to Android-SourceCode/app/src/main/res/drawable/logo.png diff --git a/app/src/main/res/drawable/master.png b/Android-SourceCode/app/src/main/res/drawable/master.png similarity index 100% rename from app/src/main/res/drawable/master.png rename to Android-SourceCode/app/src/main/res/drawable/master.png diff --git a/app/src/main/res/drawable/medicine_icon.jpg b/Android-SourceCode/app/src/main/res/drawable/medicine_icon.jpg similarity index 100% rename from app/src/main/res/drawable/medicine_icon.jpg rename to Android-SourceCode/app/src/main/res/drawable/medicine_icon.jpg diff --git a/app/src/main/res/drawable/no_image.jpg b/Android-SourceCode/app/src/main/res/drawable/no_image.jpg similarity index 100% rename from app/src/main/res/drawable/no_image.jpg rename to Android-SourceCode/app/src/main/res/drawable/no_image.jpg diff --git a/app/src/main/res/drawable/no_orders.png b/Android-SourceCode/app/src/main/res/drawable/no_orders.png similarity index 100% rename from app/src/main/res/drawable/no_orders.png rename to Android-SourceCode/app/src/main/res/drawable/no_orders.png diff --git a/app/src/main/res/drawable/non_active_dot.xml b/Android-SourceCode/app/src/main/res/drawable/non_active_dot.xml similarity index 100% rename from app/src/main/res/drawable/non_active_dot.xml rename to Android-SourceCode/app/src/main/res/drawable/non_active_dot.xml diff --git a/app/src/main/res/drawable/offer1.jpg b/Android-SourceCode/app/src/main/res/drawable/offer1.jpg similarity index 100% rename from app/src/main/res/drawable/offer1.jpg rename to Android-SourceCode/app/src/main/res/drawable/offer1.jpg diff --git a/app/src/main/res/drawable/offer2.jpg b/Android-SourceCode/app/src/main/res/drawable/offer2.jpg similarity index 100% rename from app/src/main/res/drawable/offer2.jpg rename to Android-SourceCode/app/src/main/res/drawable/offer2.jpg diff --git a/app/src/main/res/drawable/offer3.jpg b/Android-SourceCode/app/src/main/res/drawable/offer3.jpg similarity index 100% rename from app/src/main/res/drawable/offer3.jpg rename to Android-SourceCode/app/src/main/res/drawable/offer3.jpg diff --git a/app/src/main/res/drawable/prescription.png b/Android-SourceCode/app/src/main/res/drawable/prescription.png similarity index 100% rename from app/src/main/res/drawable/prescription.png rename to Android-SourceCode/app/src/main/res/drawable/prescription.png diff --git a/app/src/main/res/drawable/product_bg.xml b/Android-SourceCode/app/src/main/res/drawable/product_bg.xml similarity index 100% rename from app/src/main/res/drawable/product_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/product_bg.xml diff --git a/app/src/main/res/drawable/progress.xml b/Android-SourceCode/app/src/main/res/drawable/progress.xml similarity index 100% rename from app/src/main/res/drawable/progress.xml rename to Android-SourceCode/app/src/main/res/drawable/progress.xml diff --git a/app/src/main/res/drawable/rect.xml b/Android-SourceCode/app/src/main/res/drawable/rect.xml similarity index 100% rename from app/src/main/res/drawable/rect.xml rename to Android-SourceCode/app/src/main/res/drawable/rect.xml diff --git a/app/src/main/res/drawable/share.png b/Android-SourceCode/app/src/main/res/drawable/share.png similarity index 100% rename from app/src/main/res/drawable/share.png rename to Android-SourceCode/app/src/main/res/drawable/share.png diff --git a/app/src/main/res/drawable/shop_button_bg.xml b/Android-SourceCode/app/src/main/res/drawable/shop_button_bg.xml similarity index 100% rename from app/src/main/res/drawable/shop_button_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/shop_button_bg.xml diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/Android-SourceCode/app/src/main/res/drawable/side_nav_bar.xml similarity index 100% rename from app/src/main/res/drawable/side_nav_bar.xml rename to Android-SourceCode/app/src/main/res/drawable/side_nav_bar.xml diff --git a/app/src/main/res/drawable/signal.png b/Android-SourceCode/app/src/main/res/drawable/signal.png similarity index 100% rename from app/src/main/res/drawable/signal.png rename to Android-SourceCode/app/src/main/res/drawable/signal.png diff --git a/app/src/main/res/drawable/slider1.jpg b/Android-SourceCode/app/src/main/res/drawable/slider1.jpg similarity index 100% rename from app/src/main/res/drawable/slider1.jpg rename to Android-SourceCode/app/src/main/res/drawable/slider1.jpg diff --git a/app/src/main/res/drawable/slider2.jpg b/Android-SourceCode/app/src/main/res/drawable/slider2.jpg similarity index 100% rename from app/src/main/res/drawable/slider2.jpg rename to Android-SourceCode/app/src/main/res/drawable/slider2.jpg diff --git a/app/src/main/res/drawable/slider3.jpg b/Android-SourceCode/app/src/main/res/drawable/slider3.jpg similarity index 100% rename from app/src/main/res/drawable/slider3.jpg rename to Android-SourceCode/app/src/main/res/drawable/slider3.jpg diff --git a/app/src/main/res/drawable/slider4.jpg b/Android-SourceCode/app/src/main/res/drawable/slider4.jpg similarity index 100% rename from app/src/main/res/drawable/slider4.jpg rename to Android-SourceCode/app/src/main/res/drawable/slider4.jpg diff --git a/app/src/main/res/drawable/slider5.jpg b/Android-SourceCode/app/src/main/res/drawable/slider5.jpg similarity index 100% rename from app/src/main/res/drawable/slider5.jpg rename to Android-SourceCode/app/src/main/res/drawable/slider5.jpg diff --git a/Android-SourceCode/app/src/main/res/drawable/squre_shape.xml b/Android-SourceCode/app/src/main/res/drawable/squre_shape.xml new file mode 100644 index 0000000..a92c351 --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/squre_shape.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_bg.xml b/Android-SourceCode/app/src/main/res/drawable/tab_bg.xml similarity index 100% rename from app/src/main/res/drawable/tab_bg.xml rename to Android-SourceCode/app/src/main/res/drawable/tab_bg.xml diff --git a/app/src/main/res/drawable/text_selector.xml b/Android-SourceCode/app/src/main/res/drawable/text_selector.xml similarity index 100% rename from app/src/main/res/drawable/text_selector.xml rename to Android-SourceCode/app/src/main/res/drawable/text_selector.xml diff --git a/app/src/main/res/drawable/toolbarbg.xml b/Android-SourceCode/app/src/main/res/drawable/toolbarbg.xml similarity index 100% rename from app/src/main/res/drawable/toolbarbg.xml rename to Android-SourceCode/app/src/main/res/drawable/toolbarbg.xml diff --git a/Android-SourceCode/app/src/main/res/drawable/transparent_background.xml b/Android-SourceCode/app/src/main/res/drawable/transparent_background.xml new file mode 100644 index 0000000..f0123dd --- /dev/null +++ b/Android-SourceCode/app/src/main/res/drawable/transparent_background.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/visa.png b/Android-SourceCode/app/src/main/res/drawable/visa.png similarity index 100% rename from app/src/main/res/drawable/visa.png rename to Android-SourceCode/app/src/main/res/drawable/visa.png diff --git a/app/src/main/res/drawable/welcome_slider1.png b/Android-SourceCode/app/src/main/res/drawable/welcome_slider1.png similarity index 100% rename from app/src/main/res/drawable/welcome_slider1.png rename to Android-SourceCode/app/src/main/res/drawable/welcome_slider1.png diff --git a/app/src/main/res/drawable/welcome_slider2.png b/Android-SourceCode/app/src/main/res/drawable/welcome_slider2.png similarity index 100% rename from app/src/main/res/drawable/welcome_slider2.png rename to Android-SourceCode/app/src/main/res/drawable/welcome_slider2.png diff --git a/app/src/main/res/drawable/welcome_slider3.png b/Android-SourceCode/app/src/main/res/drawable/welcome_slider3.png similarity index 100% rename from app/src/main/res/drawable/welcome_slider3.png rename to Android-SourceCode/app/src/main/res/drawable/welcome_slider3.png diff --git a/app/src/main/res/layout/activity_cart.xml b/Android-SourceCode/app/src/main/res/layout/activity_cart.xml similarity index 94% rename from app/src/main/res/layout/activity_cart.xml rename to Android-SourceCode/app/src/main/res/layout/activity_cart.xml index d6a3a27..aed9a65 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/Android-SourceCode/app/src/main/res/layout/activity_cart.xml @@ -57,7 +57,7 @@ android:gravity="center" android:orientation="horizontal"> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PHP-SourceCode/admin/add-category.php b/PHP-SourceCode/admin/add-category.php new file mode 100644 index 0000000..c6d7092 --- /dev/null +++ b/PHP-SourceCode/admin/add-category.php @@ -0,0 +1,173 @@ +prepare($sql); +$query->bindParam(':category',$category,PDO::PARAM_STR); +$query->bindParam(':cateimg',$cateimg,PDO::PARAM_STR); +$query->execute(); +$lastInsertId = $dbh->lastInsertId(); +if($lastInsertId) +{ +$msg="Category added successfully"; +} +else +{ +$error="Something went wrong. Please try again"; +} +} +else +{ +$error="Something went wrong. Please try again"; +} +} +?> + + + + + + + + + + + GS | Admin Category + + + + + + + + + + + + + +
+ +
+
+
+
+

Add Category +

+
+
+
+
Form fields +
+
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + diff --git a/PHP-SourceCode/admin/add-items.php b/PHP-SourceCode/admin/add-items.php new file mode 100644 index 0000000..34fbabc --- /dev/null +++ b/PHP-SourceCode/admin/add-items.php @@ -0,0 +1,318 @@ +prepare($sql); +$query->bindParam(':name',$name,PDO::PARAM_STR); +$query->bindParam(':category_id',$category_id,PDO::PARAM_INT); +$query->bindParam(':sub_category_id',$sub_category_id,PDO::PARAM_INT); +$query->bindParam(':description',$description,PDO::PARAM_STR); +$query->bindParam(':price',$price,PDO::PARAM_STR); +$query->bindParam(':discount',$discount,PDO::PARAM_STR); +$query->bindParam(':attribute',$attribute,PDO::PARAM_STR); +$query->bindParam(':homepage',$homepage,PDO::PARAM_STR); +$query->bindParam(':active',$active,PDO::PARAM_INT); +$query->execute(); + +$lastInsertId = $dbh->lastInsertId(); +if($lastInsertId) +{ + + $folder = "../assets/images/ProductImage/product/";/* Path for file upload */ + $fileCount = count($_FILES["itemimgs"]['name']); + + for($i=0; $i < $fileCount; $i++){ + $new_file = $lastInsertId.date("Ymdhmsu").rand(0,9999999999999).".png"; + $file_loc = $_FILES['itemimgs']['tmp_name'][$i]; + $image="assets/images/ProductImage/product/".$new_file; + if(move_uploaded_file($file_loc,$folder.$new_file)){ + $sql="INSERT INTO product_image(image,item_id)VALUES(:image,:item_id)"; + $query = $dbh->prepare($sql); + $query->bindParam(':image',$image,PDO::PARAM_STR); + $query->bindParam(':item_id',$lastInsertId,PDO::PARAM_INT); + $query->execute(); + } + else{ + $error="Something went wrong. Please try again"; + } + } + + $msg="Item added successfully"; + +} +else +{ +$error="Something went wrong. Please try again"; +} + +} + + + ?> + + + + + + + + + + + + Add Items + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +

Add Items

+ +
+
+
+
Basic Info
+
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ + +
+ + +
+
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+
+ + +
+ +
+ + + + + +
+
+ + +
+
+
+
+
+
+
+ + + +
+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PHP-SourceCode/admin/add-offer.php b/PHP-SourceCode/admin/add-offer.php new file mode 100644 index 0000000..5f78be4 --- /dev/null +++ b/PHP-SourceCode/admin/add-offer.php @@ -0,0 +1,173 @@ +prepare($sql); +$query->bindParam(':name',$name,PDO::PARAM_STR); +$query->bindParam(':image',$image,PDO::PARAM_STR); +$query->execute(); +$lastInsertId = $dbh->lastInsertId(); +if($lastInsertId) +{ +$msg="Offer added successfully"; +} +else +{ +$error="Something went wrong. Please try again"; +} +} +else +{ +$error="Something went wrong. Please try again"; +} +} +?> + + + + + + + + + + + GS | Admin Banner + + + + + + + + + + + + + +
+ +
+
+
+
+

Add Category +

+
+
+
+
Form fields +
+
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + diff --git a/PHP-SourceCode/admin/add-subcategory.php b/PHP-SourceCode/admin/add-subcategory.php new file mode 100644 index 0000000..4f70f70 --- /dev/null +++ b/PHP-SourceCode/admin/add-subcategory.php @@ -0,0 +1,211 @@ +prepare($sql); +$query->bindParam(':category_id',$category_id,PDO::PARAM_INT); +$query->bindParam(':sub_category_title',$sub_category_title,PDO::PARAM_STR); +$query->bindParam(':sub_category_img',$sub_category_img,PDO::PARAM_STR); +$query->execute(); +$lastInsertId = $dbh->lastInsertId(); +if($lastInsertId) +{ +$msg="Category added successfully"; +} +else +{ +$error="Something went wrong. Please try again"; +} +} +else +{ + $sql="INSERT INTO sub_categories(category_id ,sub_category_title) VALUES(:category_id,:sub_category_title)"; + $query = $dbh->prepare($sql); + $query->bindParam(':category_id',$category_id,PDO::PARAM_INT); + $query->bindParam(':sub_category_title',$sub_category_title,PDO::PARAM_STR); + $query->execute(); + $lastInsertId = $dbh->lastInsertId(); + if($lastInsertId) + { + $msg="Category added successfully"; + } + else + { + $error="Something went wrong. Please try again"; + } +} +} +?> + + + + + + + + + + + GS | Admin Category + + + + + + + + + + + + + +
+ +
+
+
+
+

Add SubCategory +

+
+
+
+
Form fields +
+
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + diff --git a/PHP-SourceCode/admin/change-password.php b/PHP-SourceCode/admin/change-password.php new file mode 100644 index 0000000..224b4c9 --- /dev/null +++ b/PHP-SourceCode/admin/change-password.php @@ -0,0 +1,373 @@ + prepare($sql); + +$query-> bindParam(':username', $username, PDO::PARAM_STR); + +$query-> bindParam(':password', $password, PDO::PARAM_STR); + +$query-> execute(); + +$results = $query -> fetchAll(PDO::FETCH_OBJ); + +if($query -> rowCount() > 0) + +{ + +$con="update admin set Password=:newpassword where UserName=:username"; + +$chngpwd1 = $dbh->prepare($con); + +$chngpwd1-> bindParam(':username', $username, PDO::PARAM_STR); + +$chngpwd1-> bindParam(':newpassword', $newpassword, PDO::PARAM_STR); + +$chngpwd1->execute(); + +$msg="Your Password succesfully changed"; + +} + +else { + +$error="Your current password is not valid."; + +} + +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + BBDMS | Admin Change Password + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ + + +
+ +
+ + + +

Change Password

+ + + +
+ +
+ +
+ +
Form fields
+ +
+ +
+ + + + + +
ERROR:
SUCCESS:
+ +
+ + + +
+ + + +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ +
+ + + + + + + +
+ +
+ + + + + +
+ +
+ + + +
+ + + +
+ +
+ +
+ + + +
+ + + + + + + +
+ +
+ + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/awesome-bootstrap-checkbox.css b/PHP-SourceCode/admin/css/awesome-bootstrap-checkbox.css new file mode 100644 index 0000000..8caed2b --- /dev/null +++ b/PHP-SourceCode/admin/css/awesome-bootstrap-checkbox.css @@ -0,0 +1,251 @@ +.checkbox { + padding-left: 20px; +} +.checkbox label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.checkbox label::before { + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid #cccccc; + border-radius: 3px; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; +} +.checkbox label::after { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + font-size: 11px; + color: #555555; +} +.checkbox input[type="checkbox"], +.checkbox input[type="radio"] { + opacity: 0; + z-index: 1; +} +.checkbox input[type="checkbox"]:focus + label::before, +.checkbox input[type="radio"]:focus + label::before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.checkbox input[type="checkbox"]:checked + label::after, +.checkbox input[type="radio"]:checked + label::after { + font-family: "FontAwesome"; + content: "\f00c"; +} +.checkbox input[type="checkbox"]:disabled + label, +.checkbox input[type="radio"]:disabled + label { + opacity: 0.65; +} +.checkbox input[type="checkbox"]:disabled + label::before, +.checkbox input[type="radio"]:disabled + label::before { + background-color: #eeeeee; + cursor: not-allowed; +} +.checkbox.checkbox-circle label::before { + border-radius: 50%; +} +.checkbox.checkbox-inline { + margin-top: 0; +} + +.checkbox-primary input[type="checkbox"]:checked + label::before, +.checkbox-primary input[type="radio"]:checked + label::before { + background-color: #337ab7; + border-color: #337ab7; +} +.checkbox-primary input[type="checkbox"]:checked + label::after, +.checkbox-primary input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-danger input[type="checkbox"]:checked + label::before, +.checkbox-danger input[type="radio"]:checked + label::before { + background-color: #d9534f; + border-color: #d9534f; +} +.checkbox-danger input[type="checkbox"]:checked + label::after, +.checkbox-danger input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-info input[type="checkbox"]:checked + label::before, +.checkbox-info input[type="radio"]:checked + label::before { + background-color: #5bc0de; + border-color: #5bc0de; +} +.checkbox-info input[type="checkbox"]:checked + label::after, +.checkbox-info input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-warning input[type="checkbox"]:checked + label::before, +.checkbox-warning input[type="radio"]:checked + label::before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.checkbox-warning input[type="checkbox"]:checked + label::after, +.checkbox-warning input[type="radio"]:checked + label::after { + color: #fff; +} + +.checkbox-success input[type="checkbox"]:checked + label::before, +.checkbox-success input[type="radio"]:checked + label::before { + background-color: #5cb85c; + border-color: #5cb85c; +} +.checkbox-success input[type="checkbox"]:checked + label::after, +.checkbox-success input[type="radio"]:checked + label::after { + color: #fff; +} + +.radio { + padding-left: 20px; +} +.radio label { + display: inline-block; + vertical-align: middle; + position: relative; + padding-left: 5px; +} +.radio label::before { + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + left: 0; + margin-left: -20px; + border: 1px solid #cccccc; + border-radius: 50%; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out; + transition: border 0.15s ease-in-out; +} +.radio label::after { + display: inline-block; + position: absolute; + content: " "; + width: 11px; + height: 11px; + left: 3px; + top: 3px; + margin-left: -20px; + border-radius: 50%; + background-color: #555555; + -webkit-transform: scale(0, 0); + -ms-transform: scale(0, 0); + -o-transform: scale(0, 0); + transform: scale(0, 0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); +} +.radio input[type="radio"] { + opacity: 0; + z-index: 1; +} +.radio input[type="radio"]:focus + label::before { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.radio input[type="radio"]:checked + label::after { + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); +} +.radio input[type="radio"]:disabled + label { + opacity: 0.65; +} +.radio input[type="radio"]:disabled + label::before { + cursor: not-allowed; +} +.radio.radio-inline { + margin-top: 0; +} + +.radio-primary input[type="radio"] + label::after { + background-color: #337ab7; +} +.radio-primary input[type="radio"]:checked + label::before { + border-color: #337ab7; +} +.radio-primary input[type="radio"]:checked + label::after { + background-color: #337ab7; +} + +.radio-danger input[type="radio"] + label::after { + background-color: #d9534f; +} +.radio-danger input[type="radio"]:checked + label::before { + border-color: #d9534f; +} +.radio-danger input[type="radio"]:checked + label::after { + background-color: #d9534f; +} + +.radio-info input[type="radio"] + label::after { + background-color: #5bc0de; +} +.radio-info input[type="radio"]:checked + label::before { + border-color: #5bc0de; +} +.radio-info input[type="radio"]:checked + label::after { + background-color: #5bc0de; +} + +.radio-warning input[type="radio"] + label::after { + background-color: #f0ad4e; +} +.radio-warning input[type="radio"]:checked + label::before { + border-color: #f0ad4e; +} +.radio-warning input[type="radio"]:checked + label::after { + background-color: #f0ad4e; +} + +.radio-success input[type="radio"] + label::after { + background-color: #5cb85c; +} +.radio-success input[type="radio"]:checked + label::before { + border-color: #5cb85c; +} +.radio-success input[type="radio"]:checked + label::after { + background-color: #5cb85c; +} + +input[type="checkbox"].styled:checked + label:after, +input[type="radio"].styled:checked + label:after { + font-family: 'FontAwesome'; + content: "\f00c"; +} +input[type="checkbox"] .styled:checked + label::before, +input[type="radio"] .styled:checked + label::before { + color: #fff; +} +input[type="checkbox"] .styled:checked + label::after, +input[type="radio"] .styled:checked + label::after { + color: #fff; +} diff --git a/PHP-SourceCode/admin/css/bootstrap-select.css b/PHP-SourceCode/admin/css/bootstrap-select.css new file mode 100644 index 0000000..ac0de80 --- /dev/null +++ b/PHP-SourceCode/admin/css/bootstrap-select.css @@ -0,0 +1,263 @@ +/*! + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +.bootstrap-select { + width: 220px \0; + /*IE9 and below*/ +} +.bootstrap-select > .dropdown-toggle { + width: 100%; + padding-right: 25px; +} +.has-error .bootstrap-select .dropdown-toggle, +.error .bootstrap-select .dropdown-toggle { + border-color: #b94a48; +} +.bootstrap-select.fit-width { + width: auto !important; +} +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { + width: 220px; +} +.bootstrap-select .dropdown-toggle:focus { + outline: thin dotted #333333 !important; + outline: 5px auto -webkit-focus-ring-color !important; + outline-offset: -2px; +} +.bootstrap-select.form-control { + margin-bottom: 0; + padding: 0; + border: none; +} +.bootstrap-select.form-control:not([class*="col-"]) { + width: 100%; +} +.bootstrap-select.form-control.input-group-btn { + z-index: auto; +} +.bootstrap-select.btn-group:not(.input-group-btn), +.bootstrap-select.btn-group[class*="col-"] { + float: none; + display: inline-block; + margin-left: 0; +} +.bootstrap-select.btn-group.dropdown-menu-right, +.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right, +.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right { + float: right; +} +.form-inline .bootstrap-select.btn-group, +.form-horizontal .bootstrap-select.btn-group, +.form-group .bootstrap-select.btn-group { + margin-bottom: 0; +} +.form-group-lg .bootstrap-select.btn-group.form-control, +.form-group-sm .bootstrap-select.btn-group.form-control { + padding: 0; +} +.form-inline .bootstrap-select.btn-group .form-control { + width: 100%; +} +.bootstrap-select.btn-group.disabled, +.bootstrap-select.btn-group > .disabled { + cursor: not-allowed; +} +.bootstrap-select.btn-group.disabled:focus, +.bootstrap-select.btn-group > .disabled:focus { + outline: none !important; +} +.bootstrap-select.btn-group .dropdown-toggle .filter-option { + display: inline-block; + overflow: hidden; + width: 100%; + text-align: left; +} +.bootstrap-select.btn-group .dropdown-toggle .caret { + position: absolute; + top: 50%; + right: 12px; + margin-top: -2px; + vertical-align: middle; +} +.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle { + width: 100%; +} +.bootstrap-select.btn-group .dropdown-menu { + min-width: 100%; + z-index: 1035; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select.btn-group .dropdown-menu.inner { + position: static; + float: none; + border: 0; + padding: 0; + margin: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.bootstrap-select.btn-group .dropdown-menu li { + position: relative; +} +.bootstrap-select.btn-group .dropdown-menu li.active small { + color: #fff; +} +.bootstrap-select.btn-group .dropdown-menu li.disabled a { + cursor: not-allowed; +} +.bootstrap-select.btn-group .dropdown-menu li a { + cursor: pointer; +} +.bootstrap-select.btn-group .dropdown-menu li a.opt { + position: relative; + padding-left: 2.25em; +} +.bootstrap-select.btn-group .dropdown-menu li a span.check-mark { + display: none; +} +.bootstrap-select.btn-group .dropdown-menu li a span.text { + display: inline-block; +} +.bootstrap-select.btn-group .dropdown-menu li small { + padding-left: 0.5em; +} +.bootstrap-select.btn-group .dropdown-menu .notify { + position: absolute; + bottom: 5px; + width: 96%; + margin: 0 2%; + min-height: 26px; + padding: 3px 5px; + background: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + pointer-events: none; + opacity: 0.9; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select.btn-group .no-results { + padding: 3px; + background: #f5f5f5; + margin: 0 5px; + white-space: nowrap; +} +.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option { + position: static; +} +.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret { + position: static; + top: auto; + margin-top: -1px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark { + position: absolute; + display: inline-block; + right: 15px; + margin-top: 5px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text { + margin-right: 34px; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle { + z-index: 1036; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:before { + content: ''; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid rgba(204, 204, 204, 0.2); + position: absolute; + bottom: -4px; + left: 9px; + display: none; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:after { + content: ''; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + bottom: -4px; + left: 10px; + display: none; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before { + bottom: auto; + top: -3px; + border-top: 7px solid rgba(204, 204, 204, 0.2); + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after { + bottom: auto; + top: -3px; + border-top: 6px solid white; + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before { + right: 12px; + left: auto; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after { + right: 13px; + left: auto; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before, +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after { + display: block; +} +.bs-searchbox, +.bs-actionsbox, +.bs-donebutton { + padding: 4px 8px; +} +.bs-actionsbox { + float: left; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-actionsbox .btn-group button { + width: 50%; +} +.bs-donebutton { + float: left; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-donebutton .btn-group button { + width: 100%; +} +.bs-searchbox + .bs-actionsbox { + padding: 0 8px 4px; +} +.bs-searchbox .form-control { + margin-bottom: 0; + width: 100%; +} +select.bs-select-hidden, +select.selectpicker { + display: none !important; +} +select.mobile-device { + position: absolute !important; + top: 0; + left: 0; + display: block !important; + width: 100%; + height: 100% !important; + opacity: 0; +} +/*# sourceMappingURL=bootstrap-select.css.map */ \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/bootstrap-social.css b/PHP-SourceCode/admin/css/bootstrap-social.css new file mode 100644 index 0000000..60574e8 --- /dev/null +++ b/PHP-SourceCode/admin/css/bootstrap-social.css @@ -0,0 +1,147 @@ +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2015 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + */ + +.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon>:first-child{border:none;text-align:center;width:100% !important} +.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} +.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} +.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} +.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} +.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} +.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)} +.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} +.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} +.btn-adn .badge{color:#d87a68;background-color:#fff} +.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} +.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket .badge{color:#205081;background-color:#fff} +.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} +.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} +.btn-dropbox .badge{color:#1087dd;background-color:#fff} +.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} +.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} +.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)} +.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} +.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} +.btn-facebook .badge{color:#3b5998;background-color:#fff} +.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} +.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} +.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)} +.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} +.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} +.btn-flickr .badge{color:#ff0084;background-color:#fff} +.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} +.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} +.btn-foursquare .badge{color:#f94877;background-color:#fff} +.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} +.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} +.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)} +.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} +.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} +.btn-github .badge{color:#444;background-color:#fff} +.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} +.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} +.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)} +.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none} +.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} +.btn-google .badge{color:#dd4b39;background-color:#fff} +.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} +.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} +.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)} +.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} +.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} +.btn-instagram .badge{color:#3f729b;background-color:#fff} +.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} +.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} +.btn-linkedin .badge{color:#007bb6;background-color:#fff} +.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} +.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} +.btn-microsoft .badge{color:#2672ec;background-color:#fff} +.btn-odnoklassniki{color:#fff;background-color:#f4731c;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:focus,.btn-odnoklassniki.focus{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:hover{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:active:hover,.btn-odnoklassniki.active:hover,.open>.dropdown-toggle.btn-odnoklassniki:hover,.btn-odnoklassniki:active:focus,.btn-odnoklassniki.active:focus,.open>.dropdown-toggle.btn-odnoklassniki:focus,.btn-odnoklassniki:active.focus,.btn-odnoklassniki.active.focus,.open>.dropdown-toggle.btn-odnoklassniki.focus{color:#fff;background-color:#b14c09;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{background-image:none} +.btn-odnoklassniki.disabled,.btn-odnoklassniki[disabled],fieldset[disabled] .btn-odnoklassniki,.btn-odnoklassniki.disabled:hover,.btn-odnoklassniki[disabled]:hover,fieldset[disabled] .btn-odnoklassniki:hover,.btn-odnoklassniki.disabled:focus,.btn-odnoklassniki[disabled]:focus,fieldset[disabled] .btn-odnoklassniki:focus,.btn-odnoklassniki.disabled.focus,.btn-odnoklassniki[disabled].focus,fieldset[disabled] .btn-odnoklassniki.focus,.btn-odnoklassniki.disabled:active,.btn-odnoklassniki[disabled]:active,fieldset[disabled] .btn-odnoklassniki:active,.btn-odnoklassniki.disabled.active,.btn-odnoklassniki[disabled].active,fieldset[disabled] .btn-odnoklassniki.active{background-color:#f4731c;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki .badge{color:#f4731c;background-color:#fff} +.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} +.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} +.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)} +.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} +.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} +.btn-openid .badge{color:#f7931e;background-color:#fff} +.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} +.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} +.btn-pinterest .badge{color:#cb2027;background-color:#fff} +.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} +.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} +.btn-reddit .badge{color:#eff7ff;background-color:#000} +.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} +.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud .badge{color:#f50;background-color:#fff} +.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} +.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} +.btn-tumblr .badge{color:#2c4762;background-color:#fff} +.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} +.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} +.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)} +.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} +.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} +.btn-twitter .badge{color:#55acee;background-color:#fff} +.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} +.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} +.btn-vimeo .badge{color:#1ab7ea;background-color:#fff} +.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} +.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} +.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)} +.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} +.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} +.btn-vk .badge{color:#587ea3;background-color:#fff} +.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} +.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} +.btn-yahoo .badge{color:#720e9e;background-color:#fff} diff --git a/PHP-SourceCode/admin/css/bootstrap.min.css b/PHP-SourceCode/admin/css/bootstrap.min.css new file mode 100644 index 0000000..e5f8482 --- /dev/null +++ b/PHP-SourceCode/admin/css/bootstrap.min.css @@ -0,0 +1,11 @@ +@import url("https://fonts.googleapis.com/css?family=Roboto:400,500");/*! + * bootswatch v3.3.6 + * Homepage: http://bootswatch.com + * Copyright 2012-2016 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#93c54b;text-decoration:none}a:hover,a:focus{color:#79a736;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #f8f5f0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#98978b}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#98978b}.text-primary{color:#325d88}a.text-primary:hover,a.text-primary:focus{color:#244363}.text-success{color:#93c54b}a.text-success:hover,a.text-success:focus{color:#79a736}.text-info{color:#29abe0}a.text-info:hover,a.text-info:focus{color:#1b8dbb}.text-warning{color:#f47c3c}a.text-warning:hover,a.text-warning:focus{color:#ef5c0e}.text-danger{color:#d9534f}a.text-danger:hover,a.text-danger:focus{color:#c9302c}.bg-primary{color:#fff;background-color:#325d88}a.bg-primary:hover,a.bg-primary:focus{background-color:#244363}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #f8f5f0}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #98978b}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #dfd7ca}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#3e3f3a}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dfd7ca;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#8e8c84;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#98978b;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dfd7ca}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dfd7ca}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dfd7ca}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f8f5f0}.table-hover>tbody>tr:hover{background-color:#f8f5f0}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f8f5f0}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#f0e9df}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dfd7ca}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:inherit;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:13px;font-size:14px;line-height:1.42857143;color:#3e3f3a}.form-control{display:block;width:100%;height:46px;padding:12px 16px;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff;background-image:none;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#dfd7ca;opacity:1}.form-control:-ms-input-placeholder{color:#dfd7ca}.form-control::-webkit-input-placeholder{color:#dfd7ca}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f5f0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:46px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:13px;padding-bottom:13px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:38px;padding:21px 30px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:57.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:46px;height:46px;line-height:46px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#93c54b}.has-success .form-control{border-color:#93c54b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#79a736;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98}.has-success .input-group-addon{color:#93c54b;border-color:#93c54b;background-color:#dff0d8}.has-success .form-control-feedback{color:#93c54b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f47c3c}.has-warning .form-control{border-color:#f47c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ef5c0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d}.has-warning .input-group-addon{color:#f47c3c;border-color:#f47c3c;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#f47c3c}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#d9534f}.has-error .form-control{border-color:#d9534f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#c9302c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3}.has-error .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#f2dede}.has-error .form-control-feedback{color:#d9534f}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#7f8177}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:13px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:33px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:13px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:21px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:12px 16px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#3e3f3a;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#121210;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#3e3f3a;border-color:transparent}.btn-default .badge{color:#3e3f3a;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#325d88;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b3249;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#325d88;border-color:transparent}.btn-primary .badge{color:#325d88;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#93c54b;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#658c2d;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#93c54b;border-color:transparent}.btn-success .badge{color:#93c54b;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#29abe0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#17759c;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#29abe0;border-color:transparent}.btn-info .badge{color:#29abe0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f47c3c;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#ce4f0c;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f47c3c;border-color:transparent}.btn-warning .badge{color:#f47c3c;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#93c54b;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#79a736;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#dfd7ca;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#f8f5f0}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#98978b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#98978b;background-color:#f8f5f0}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#98978b;text-decoration:none;outline:0;background-color:#f8f5f0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#dfd7ca}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#dfd7ca;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:12px 16px;font-size:14px;font-weight:normal;line-height:1;color:#3e3f3a;text-align:center;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:20px 30px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f8f5f0}.nav>li.disabled>a{color:#dfd7ca}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#dfd7ca;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#f8f5f0;border-color:#93c54b}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dfd7ca}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dfd7ca #dfd7ca #dfd7ca}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#98978b;background-color:#ffffff;border:1px solid #dfd7ca;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#98978b;background-color:#f8f5f0}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20px 15px;font-size:18px;line-height:20px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20px;padding-bottom:20px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7px;margin-bottom:7px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-btn.btn-sm{margin-top:15px;margin-bottom:15px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:20px;margin-bottom:20px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#3e3f3a;border-color:#3e3f3a}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#8e8c84}.navbar-default .navbar-nav>li>a{color:#98978b}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#393a35}.navbar-default .navbar-toggle .icon-bar{background-color:#98978b}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#3e3f3a}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#393a35;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#98978b}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#98978b}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#98978b}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#93c54b;border-color:#93c54b}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#dfd7ca}.navbar-inverse .navbar-nav>li>a{color:#6b9430}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#89be3d}.navbar-inverse .navbar-toggle .icon-bar{background-color:#6b9430}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#81b33a}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#89be3d;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#6b9430}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#6b9430}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#6b9430}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f8f5f0;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#dfd7ca}.breadcrumb>.active{color:#98978b}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:12px 16px;line-height:1.42857143;text-decoration:none;color:#98978b;background-color:#f8f5f0;border:1px solid #dfd7ca;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dfd7ca;background-color:#f8f5f0;border-color:#dfd7ca;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:20px 30px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#dfd7ca}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dfd7ca;background-color:#f8f5f0;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#3e3f3a}.label-default[href]:hover,.label-default[href]:focus{background-color:#242422}.label-primary{background-color:#325d88}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#244363}.label-success{background-color:#93c54b}.label-success[href]:hover,.label-success[href]:focus{background-color:#79a736}.label-info{background-color:#29abe0}.label-info[href]:hover,.label-info[href]:focus{background-color:#1b8dbb}.label-warning{background-color:#f47c3c}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef5c0e}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#93c54b;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#ffffff;background-color:#93c54b}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f8f5f0}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#e8decd}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#93c54b}.thumbnail .caption{padding:9px;color:#3e3f3a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#93c54b;border-color:transparent;color:#ffffff}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#29abe0;border-color:transparent;color:#ffffff}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f47c3c;border-color:transparent;color:#ffffff}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ffffff}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#325d88;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#93c54b}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#29abe0}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f47c3c}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dfd7ca}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#3e3f3a}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:inherit}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#3e3f3a;background-color:#f8f5f0}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#f8f5f0;color:#dfd7ca;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#dfd7ca}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#3e3f3a}.list-group-item-success{color:#93c54b;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#93c54b}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#93c54b;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#93c54b;border-color:#93c54b}.list-group-item-info{color:#29abe0;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#29abe0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#29abe0;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#29abe0;border-color:#29abe0}.list-group-item-warning{color:#f47c3c;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#f47c3c}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f47c3c;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f47c3c;border-color:#f47c3c}.list-group-item-danger{color:#d9534f;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#d9534f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#d9534f;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#d9534f;border-color:#d9534f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f8f5f0;border-top:1px solid #dfd7ca;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dfd7ca}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dfd7ca}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dfd7ca}.panel-default{border-color:#dfd7ca}.panel-default>.panel-heading{color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dfd7ca}.panel-default>.panel-heading .badge{color:#f8f5f0;background-color:#3e3f3a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dfd7ca}.panel-primary{border-color:#325d88}.panel-primary>.panel-heading{color:#ffffff;background-color:#325d88;border-color:#325d88}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#325d88}.panel-primary>.panel-heading .badge{color:#325d88;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#325d88}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#93c54b;background-color:#93c54b;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#93c54b;background-color:#93c54b}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#29abe0;background-color:#29abe0;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#29abe0;background-color:#29abe0}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#f47c3c;background-color:#f47c3c;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#f47c3c;background-color:#f47c3c}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#d9534f;background-color:#d9534f;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#d9534f}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f8f5f0;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 0 0 transparent;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #f8f5f0;border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #f8f5f0}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #f8f5f0}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#3e3f3a;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3e3f3a}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3e3f3a}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dfd7ca;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f8f5f0;border-bottom:1px solid #f0e9df;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#b9a78a;border-top-color:#dfd7ca;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#b9a78a;border-right-color:#dfd7ca}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#b9a78a;border-bottom-color:#dfd7ca;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#b9a78a;border-left-color:#dfd7ca}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.sandstone{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar .nav>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar-form input,.navbar-form .form-control{border:none}.btn{border:none;font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.btn:hover{border-color:transparent}.btn-lg{line-height:26px}.btn-default:hover{background-color:#393a35}input,.form-control{-webkit-box-shadow:none;box-shadow:none}input:focus,.form-control:focus{border-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.nav{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#dfd7ca}.nav-tabs>li>a{background-color:#f8f5f0;border-color:#dfd7ca;color:#98978b}.nav-tabs>li.disabled>a:hover{background-color:#f8f5f0}.nav-pills a{color:#98978b}.nav-pills li>a{border:1px solid transparent}.nav-pills li.active>a,.nav-pills li>a:hover{border-color:#dfd7ca}.nav-pills li.disabled>a{border-color:transparent}.breadcrumb{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;border:1px solid #dfd7ca}.breadcrumb a{color:#98978b}.pagination{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager li>a{color:#98978b}.dropdown-menu>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.alert a,.alert .alert-link{color:#fff}.tooltip{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.progress{border-radius:10px;background-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.list-group-item{padding:16px 24px}.well{-webkit-box-shadow:none;box-shadow:none}.panel{-webkit-box-shadow:none;box-shadow:none}.panel .panel-heading,.panel .panel-title{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;color:#fff}.panel .panel-footer{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.panel-default .panel-heading,.panel-default .panel-title,.panel-default .panel-footer{color:#98978b} \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/css/vars.css b/PHP-SourceCode/admin/css/css/vars.css new file mode 100644 index 0000000..59d8994 --- /dev/null +++ b/PHP-SourceCode/admin/css/css/vars.css @@ -0,0 +1,2 @@ +@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700,900,100italic,300italic,400italic); +@import url(https://fonts.googleapis.com/css?family=Oswald:700,400,300); diff --git a/PHP-SourceCode/admin/css/dataTables.bootstrap.min.css b/PHP-SourceCode/admin/css/dataTables.bootstrap.min.css new file mode 100644 index 0000000..5d3f6de --- /dev/null +++ b/PHP-SourceCode/admin/css/dataTables.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable{border-collapse:separate !important}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/PHP-SourceCode/admin/css/datatables.min.css b/PHP-SourceCode/admin/css/datatables.min.css new file mode 100644 index 0000000..cb36971 --- /dev/null +++ b/PHP-SourceCode/admin/css/datatables.min.css @@ -0,0 +1,21 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs-3.3.5/jq-2.1.4,dt-1.10.8 + * + * Included libraries: + * jQuery 2.1.4, Bootstrap 3.3.5, DataTables 1.10.8 + */ + +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot);src:url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff) format('woff'),url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(Bootstrap-3.3.5/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} + +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}table.dataTable thead>tr>th,table.dataTable thead>tr>td{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable{border-collapse:separate !important}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0} + + diff --git a/PHP-SourceCode/admin/css/fileinput.min.css b/PHP-SourceCode/admin/css/fileinput.min.css new file mode 100644 index 0000000..3073b98 --- /dev/null +++ b/PHP-SourceCode/admin/css/fileinput.min.css @@ -0,0 +1,11 @@ +/*! + * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015 + * @package bootstrap-fileinput + * @version 4.2.6 + * + * File input styling for Bootstrap 3.0 + * Built for Yii Framework 2.0 + * Author: Kartik Visweswaran + * Year: 2015 + * For more Yii related demos visit http://demos.krajee.com + */.file-input{overflow-x:auto}.file-loading{top:0;right:0;width:25px;height:25px;font-size:999px;text-align:right;color:#fff;background:transparent url(../img/loading.gif) top left no-repeat;border:none}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;filter:alpha(opacity=0);opacity:0;background:none repeat scroll 0 0 transparent;cursor:inherit;display:block}.file-caption .glyphicon{display:inline-block;min-width:18px;margin-top:2px}.file-caption-name{display:inline-block;overflow:hidden;padding-right:10px;word-break:break-all}.file-caption-ellipsis{position:absolute;right:10px;margin-top:-6px;font-size:1.2em;display:none;font-weight:700;cursor:default}.kv-has-ellipsis .file-caption-ellipsis{display:inline}.kv-has-ellipsis{padding-right:17px}.kv-search-container .kv-search-clear{position:absolute;padding:10px;right:0}.file-error-message{background-color:#f2dede;color:#a94442;text-align:center;border-radius:5px;padding:5px}.file-error-message pre,.file-error-message ul{margin:5px 0;text-align:left}.file-caption-disabled{background-color:#EEE;cursor:not-allowed;opacity:1}.file-input .btn .disabled,.file-input .btn[disabled]{cursor:not-allowed}.file-preview{border-radius:5px;border:1px solid #ddd;padding:5px;width:100%;margin-bottom:5px}.file-preview-frame{display:table;margin:8px;height:160px;border:1px solid #ddd;box-shadow:1px 1px 5px 0 #a2958a;padding:6px;float:left;text-align:center;vertical-align:middle}.file-preview-frame:hover{box-shadow:3px 3px 5px 0 #333}.file-preview-image{height:160px;vertical-align:text-center}.file-preview-text{width:160px;color:#428bca;font-size:11px;text-align:center}.file-preview-other{padding-top:48px;text-align:center}.file-preview-other i{font-size:2.4em}.file-other-error{width:100%;padding-top:30px;text-align:right}.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file{display:none}.loading{background:transparent url(../img/loading.gif) no-repeat scroll center center content-box!important}.wrap-indicator{font-weight:700;color:#245269;cursor:pointer}.file-actions{text-align:left}.file-footer-buttons{float:right}.file-thumbnail-footer .file-caption-name{padding-top:4px;font-size:11px;color:#777}.file-upload-indicator{padding-top:2px;cursor:default}.file-upload-indicator:hover{font-size:1.2em;font-weight:700;padding-top:0}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;height:100%;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone-title{color:#aaa;font-size:40px;padding:85px 10px}.highlighted{border:2px dashed #999!important;background-color:#f0f0f0}.file-uploading{background-image:url(../img/loading-sm.gif);background-position:center bottom 10px;background-repeat:no-repeat;opacity:.6}.file-icon-large{font-size:1.2em} \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/font-awesome.min.css b/PHP-SourceCode/admin/css/font-awesome.min.css new file mode 100644 index 0000000..585ef7b --- /dev/null +++ b/PHP-SourceCode/admin/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"} diff --git a/PHP-SourceCode/admin/css/jquery.dataTables.min.css b/PHP-SourceCode/admin/css/jquery.dataTables.min.css new file mode 100644 index 0000000..5e524ca --- /dev/null +++ b/PHP-SourceCode/admin/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;*cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table,.dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/PHP-SourceCode/admin/css/less/components.less b/PHP-SourceCode/admin/css/less/components.less new file mode 100644 index 0000000..c0ab49a --- /dev/null +++ b/PHP-SourceCode/admin/css/less/components.less @@ -0,0 +1,495 @@ +@import 'less/vars'; + +/**************************** +* FOR RESPONSIVENESS * +****************************/ + +::selection { + background: @selection; /* WebKit/Blink Browsers */ + color: #fff; +} +::-moz-selection { + background: @selection; /* Gecko Browsers */ + color: #fff; +} + +html { + font-size: 14px; +} +@media only screen and (min-width: 480px) { + html { + font-size: 17px; + } +} +@media only screen and (min-width: 768px) { + html { + font-size: 14px; + } +} +@media only screen and (min-width: 1024px) { + html { + // font-size: 20px; + } + p { + font-size: 1em; + margin-bottom: 1.8em; + } +} + +/**************************** +* BODY DEFAULTS * +****************************/ + +body { + font-size: 1em; +// font-family: @secondary-font; +// background: @background; +} +a { + color: @color1; + &:hover { + text-decoration: none; + color: lighten(@color1, 10%); + } +} + + +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +h1,h2,h3,h4,h5,h6, +.h1,.h2,.h3,.h4,.h5,.h6{ +// font-family: @primary-font; +// font-weight: bold; +} + +/**************************** +* Buttons * +****************************/ + +.btn{ + font-family: @primary-font; + i{ + position: relative; + top: -2px; + } +} + +.btn.text-left{ + text-align: left; +} + +.btn-brand { + background: @color1; + color: #fff; + &:hover { + color: #fff; + background: darken(@color1, 10%); + } +} + +.btn-dark { + background: #272727; + color: #fff; + &:hover { + color: #fff; + background: darken(@color1, 10%); + } +} + +.btn-red { + background: @selection; + color: #fff; + &:hover { + color: #fff; + background: darken(@selection, 10%); + } +} + +.btn-alt { + background: #f0f0f0; + color: #222; + &:hover { + color: #fff; + background: darken(@color1, 10%); + } +} + +/**************************** +* Background Colors * +****************************/ + +// bk because to prevent conflick from orifinal names +.bk-primary{ + background: @color-primary; +} +.bk-success{ + background: @color-success; +} +.bk-warning{ + background: @color-warning; +} +.bk-danger{ + background: @color-danger; +} +.bk-info{ + background: @color-info; +} + +.bk-white, +.bk-light { + background: #fff; +} +.bk-brand { + background: @color1; +} +.bk-dark { + background: #222; +} +.bk-blue { + background: #0010ce; +} +.bk-alt { + background: #f7f7f7; +} +.bk-ghost { + background: transparent; +} +.bk-img { + position: relative; + width: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-image: url(../../img/login-bg.jpg); +} +.bk-fixed{ + background-attachment: fixed; +} + +.hr-green{ + height: 2px; + background: @color1; +} +.hr-grey{ + height: 2px; + background: #f0f0f0; +} +.hr-dashed { + background-color: transparent; + border-top: 1px dotted #edf0f5; + color: transparent; + height: 1px; + margin: 20px 0; +} + +.panel{ + overflow: hidden; +} + + +/**************************** +* Border * +****************************/ +.brdr{ + border: 1px solid #f0f0f0; +} + + +/**************************** +* Text size color * +****************************/ + +.font-one{ + font-family: @primary-font; +} + +.text-bold { + font-weight: bold; +} +.text-normal{ + font-weight: normal; +} +.text-thin{ + font-weight: 100; +} +.text-lowercase{ + text-transform: none; +} +.text-sm { + font-size: 13px; +} +.text-lg { + font-size: 18px; +} +.text-xl{ + font-size: 1.6em; +} +.text-2x{ + font-size: 2em; +} +.text-3x{ + font-size: 2.4em; +} +.text-4x{ + font-size: 3em; +} +.text-white, +.text-light { + color: #fff !important; +} + +.link-white a{ + color: #fff; +} + +.text-grey{ + color: #ccc; +} + +.text-dgrey{ + color: #818181; +} + +.text-brand { + color: @color1; +} +.text-yellow { + color: #ffff00; +} + +.title{ + .line{ + display: inline-block; + padding-bottom: 10px; + border-bottom: 3px solid #222; + } +} + +/**************************** +* Margins * +****************************/ +.mt { + margin-top: 18px; + &-0x{ + margin-top: 0 !important; + } + &-2x{ + margin-top: 36px; + } + &-3x{ + margin-top: 54px; + } + &-4x{ + margin-top: 90px; + } + &-5x{ + margin-top: 144px; + } +} +.mb { + margin-bottom: 18px; + &-0x{ + margin-bottom: 0 !important; + } + &-2x{ + margin-bottom: 36px; + } + &-3x{ + margin-bottom: 54px; + } + &-4x{ + margin-bottom: 90px; + } + &-5x{ + margin-bottom: 144px; + } +} +.pt{ + padding-top: 18px; + &-2x{ + padding-top: 36px; + } + &-3x{ + padding-top: 54px; + } + &-4x{ + padding-top: 90px; + } + &-5x{ + padding-top: 144px; + } +} +.pb{ + padding-bottom: 18px; + &-2x{ + padding-bottom: 36px; + } + &-3x{ + padding-bottom: 54px; + } + &-4x{ + padding-bottom: 90px; + } + &-5x{ + padding-bottom: 144px; + } +} + + +/* Content boxes */ +.content-box{ + padding: 15px; +} + +.block-anchor{ + display: block; +} + +/**************************** +* Content Typography * +****************************/ +.content-format{ + line-height: 1.6em; + font-weight: 400; + letter-spacing: .01em; + font-style: normal; + word-wrap: break-word; + .h1,.h2,.h3,.h4,.h5,.h6, + h1,h2,h3,h4,h5,h6{ + font-family: @primary-font; + font-weight: 700; + font-weight: bold; + font-style: normal; + color: rgba(0,0,0,0.8); + margin-top: 40px; + a{ + font-size: inherit; + } + } + .h2, + h2{ + font-size: 3em; + line-height: 1; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 4px solid #f0f0f0; + } + .h3, + h3{ + font-size: 2em; + line-height: 1.2; + margin-bottom: 4px; + margin: 1em 0 0.5em; + } + .h4, + h4{ + font-size: 1.7em; + line-height: 1.4; + margin-bottom: 6px; + } + .h5, + h5{ + font-size: 1.5em; + line-height: 1.4; + margin-bottom: 8px; + } + .h6, + h6{ + font-size: 1.3em; + line-height: 1.4; + margin-bottom: 10px; + } + strong{ + font-weight: bold; + } + ul:not(.social-awesome){ + list-style: disc outside; + margin: 1.714285714rem 0 1.714285714rem; + line-height: 1.714285714; + li{ + margin: 0 0 0 36px; + margin: 0 1rem 0 2.571428571rem; + } + &.list-unstyled{ + list-style: none; + li{ + margin: 0 0 0 24px; + } + } + } + em{ + font-style: italic; + } + p{ + margin-bottom: 1.8em; + } + figure{ + .caption{ + color: #999; + font-size: 14px; + } + margin-bottom: 42px; + } + img{ + border: 0; + height: auto; + max-width: 100%; + vertical-align: middle; + } + .fa{ + color: @color1; + margin-right: 10px; + } + blockquote { + border-left: 4px solid #c3c3c3; + border-left: 4px solid rgba(51, 51, 51, 0.17); + color: #707070; + color: rgba(51, 51, 51, 0.7); + font-size: 1.2em; + font-style: italic; + line-height: 1.6667; + margin-bottom: 1em; + padding-left: 0.7778em; + &.double-quote{ + border-left: none; + padding-left: 1em; + } + } + pre{ + background: #fff; + border: 1px solid #ededed; + color: #666; + font-family: Consolas, Monaco, Lucida Console, monospace; + font-size: .9em; + line-height: 1.714285714; + margin: 24px 0; + margin: 1.714285714rem 0; + overflow: auto; + } + ol{ + margin: 24px 0 24px; + margin: 1.714285714rem 0 1.714285714rem; + line-height: 1.714285714; + list-style: decimal outside; + } + img.wp-smiley, img.emoji { + display: inline !important; + border: none !important; + box-shadow: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; + } +} \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/less/vars.less b/PHP-SourceCode/admin/css/less/vars.less new file mode 100644 index 0000000..315e9e4 --- /dev/null +++ b/PHP-SourceCode/admin/css/less/vars.less @@ -0,0 +1,33 @@ +// Import Fonts +@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700,900,100italic,300italic,400italic); +@import url(https://fonts.googleapis.com/css?family=Oswald:700,400,300); + +@secondary-font: 'Lato', sans-serif; +//@secondary-font: 'Oswald', sans-serif; +@primary-font: 'Oswald', sans-serif; + + +// Layout Breakpoints +@highdensity: ~"only screen and (-webkit-min-device-pixel-ratio: 1.5)", + ~"only screen and (min--moz-device-pixel-ratio: 1.5)", + ~"only screen and (-o-min-device-pixel-ratio: 3/2)", + ~"only screen and (min-device-pixel-ratio: 1.5)"; +@mobile: ~"only screen and (max-width: 479px)"; +@tablet: ~"only screen and (min-width: 480px)"; +@desktop: ~"only screen and (min-width: 992px)"; +@desktop-xl: ~"only screen and (min-width: 1200px)"; + +// Brand Colors +@background: #fff; +@color1: #37a6c4; +@color2: #ff962f; +@color3: #25292a; + + +@color-primary: #325d88; +@color-success: #93c54b; +@color-warning: #f47c3c; +@color-danger: #d9534f; +@color-info: #29abe0; + +@selection: #4f5362; \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/style.css b/PHP-SourceCode/admin/css/style.css new file mode 100644 index 0000000..168b0f6 --- /dev/null +++ b/PHP-SourceCode/admin/css/style.css @@ -0,0 +1,1517 @@ +@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700,900,100italic,300italic,400italic); + +@import url(https://fonts.googleapis.com/css?family=Oswald:700,400,300); + +/**************************** + +* FOR RESPONSIVENESS * + +****************************/ + +::selection { + + background: #4f5362; + + /* WebKit/Blink Browsers */ + + color: #fff; + +} + +::-moz-selection { + + background: #4f5362; + + /* Gecko Browsers */ + + color: #fff; + +} + +html { + + font-size: 14px; + +} + +@media only screen and (min-width: 480px) { + + html { + + font-size: 17px; + + } + +} + +@media only screen and (min-width: 768px) { + + html { + + font-size: 14px; + + } + +} + +@media only screen and (min-width: 1024px) { + + p { + + font-size: 1em; + + margin-bottom: 1.8em; + + } + +} + +.disabled { + pointer-events: none; +} + +/**************************** + +* BODY DEFAULTS * + +****************************/ + +body { + + font-size: 1em; + +} + +a { + + color: #37a6c4; + +} + +a:hover { + + text-decoration: none; + + color: #5db9d1; + +} + +/**************************** + +* Buttons * + +****************************/ + +.btn { + + font-family: 'Oswald', sans-serif; + +} + +.btn i { + + position: relative; + + top: -2px; + +} + +.btn.text-left { + + text-align: left; + +} + +.btn-brand { + + background: #37a6c4; + + color: #fff; + +} + +.btn-brand:hover { + + color: #fff; + + background: #2c849c; + +} + +.btn-dark { + + background: #272727; + + color: #fff; + +} + +.btn-dark:hover { + + color: #fff; + + background: #2c849c; + +} + +.btn-red { + + background: #4f5362; + + color: #fff; + +} + +.btn-red:hover { + + color: #fff; + + background: #383b46; + +} + +.btn-alt { + + background: #f0f0f0; + + color: #7BC3FC; + +} + +.btn-alt:hover { + + color: #fff; + + background: #2c849c; + +} + +/**************************** + +* Background Colors * + +****************************/ + +.bk-primary { + + background: #325d88; + +} + +.bk-success { + + background: #93c54b; + +} + +.bk-warning { + + background: #f47c3c; + +} + +.bk-danger { + + background: #d9534f; + +} + +.bk-info { + + background: #29abe0; + +} + +.bk-white, + +.bk-light { + + background: #fff; + +} + +.bk-brand { + + background: #37a6c4; + +} + +.bk-dark { + + background: #7BC3FC; + +} + +.bk-blue { + + background: #0010ce; + +} + +.bk-alt { + + background: #f7f7f7; + +} + +.bk-ghost { + + background: transparent; + +} + +.bk-img { + + position: relative; + + width: 100%; + + background-position: center; + + background-repeat: no-repeat; + + background-size: cover; + + background-image: url(../../img/login-bg.jpg); + +} + +.bk-fixed { + + background-attachment: fixed; + +} + +.hr-green { + + height: 2px; + + background: #37a6c4; + +} + +.hr-grey { + + height: 2px; + + background: #f0f0f0; + +} + +.hr-dashed { + + background-color: transparent; + + border-top: 1px dotted #edf0f5; + + color: transparent; + + height: 1px; + + margin: 20px 0; + +} + +.panel { + + overflow: hidden; + +} + +/**************************** + +* Border * + +****************************/ + +.brdr { + + border: 1px solid #f0f0f0; + +} + +/**************************** + +* Text size color * + +****************************/ + +.font-one { + + font-family: 'Oswald', sans-serif; + +} + +.text-bold { + + font-weight: bold; + +} + +.text-normal { + + font-weight: normal; + +} + +.text-thin { + + font-weight: 100; + +} + +.text-lowercase { + + text-transform: none; + +} + +.text-sm { + + font-size: 13px; + +} + +.text-lg { + + font-size: 18px; + +} + +.text-xl { + + font-size: 1.6em; + +} + +.text-2x { + + font-size: 2em; + +} + +.text-3x { + + font-size: 2.4em; + +} + +.text-4x { + + font-size: 3em; + +} + +.text-white, + +.text-light { + + color: #fff !important; + +} + +.link-white a { + + color: #fff; + +} + +.text-grey { + + color: #ccc; + +} + +.text-dgrey { + + color: #818181; + +} + +.text-brand { + + color: #37a6c4; + +} + +.text-yellow { + + color: #ffff00; + +} + +.title .line { + + display: inline-block; + + padding-bottom: 10px; + + border-bottom: 3px solid #7BC3FC; + +} + +/**************************** + +* Margins * + +****************************/ + +.mt { + + margin-top: 18px; + +} + +.mt-0x { + + margin-top: 0 !important; + +} + +.mt-2x { + + margin-top: 36px; + +} + +.mt-3x { + + margin-top: 54px; + +} + +.mt-4x { + + margin-top: 90px; + +} + +.mt-5x { + + margin-top: 144px; + +} + +.mb { + + margin-bottom: 18px; + +} + +.mb-0x { + + margin-bottom: 0 !important; + +} + +.mb-2x { + + margin-bottom: 36px; + +} + +.mb-3x { + + margin-bottom: 54px; + +} + +.mb-4x { + + margin-bottom: 90px; + +} + +.mb-5x { + + margin-bottom: 144px; + +} + +.pt { + + padding-top: 18px; + +} + +.pt-2x { + + padding-top: 36px; + +} + +.pt-3x { + + padding-top: 54px; + +} + +.pt-4x { + + padding-top: 90px; + +} + +.pt-5x { + + padding-top: 144px; + +} + +.pb { + + padding-bottom: 18px; + +} + +.pb-2x { + + padding-bottom: 36px; + +} + +.pb-3x { + + padding-bottom: 54px; + +} + +.pb-4x { + + padding-bottom: 90px; + +} + +.pb-5x { + + padding-bottom: 144px; + +} + +/* Content boxes */ + +.content-box { + + padding: 15px; + +} + +.block-anchor { + + display: block; + +} + +/**************************** + +* Content Typography * + +****************************/ + +.content-format { + + line-height: 1.6em; + + font-weight: 400; + + letter-spacing: .01em; + + font-style: normal; + + word-wrap: break-word; + +} + +.content-format .h1, + +.content-format .h2, + +.content-format .h3, + +.content-format .h4, + +.content-format .h5, + +.content-format .h6, + +.content-format h1, + +.content-format h2, + +.content-format h3, + +.content-format h4, + +.content-format h5, + +.content-format h6 { + + font-family: 'Oswald', sans-serif; + + font-weight: 700; + + font-weight: bold; + + font-style: normal; + + color: rgba(0, 0, 0, 0.8); + + margin-top: 40px; + +} + +.content-format .h1 a, + +.content-format .h2 a, + +.content-format .h3 a, + +.content-format .h4 a, + +.content-format .h5 a, + +.content-format .h6 a, + +.content-format h1 a, + +.content-format h2 a, + +.content-format h3 a, + +.content-format h4 a, + +.content-format h5 a, + +.content-format h6 a { + + font-size: inherit; + +} + +.content-format .h2, + +.content-format h2 { + + font-size: 3em; + + line-height: 1; + + margin-bottom: 10px; + + padding-bottom: 10px; + + border-bottom: 4px solid #f0f0f0; + +} + +.content-format .h3, + +.content-format h3 { + + font-size: 2em; + + line-height: 1.2; + + margin-bottom: 4px; + + margin: 1em 0 0.5em; + +} + +.content-format .h4, + +.content-format h4 { + + font-size: 1.7em; + + line-height: 1.4; + + margin-bottom: 6px; + +} + +.content-format .h5, + +.content-format h5 { + + font-size: 1.5em; + + line-height: 1.4; + + margin-bottom: 8px; + +} + +.content-format .h6, + +.content-format h6 { + + font-size: 1.3em; + + line-height: 1.4; + + margin-bottom: 10px; + +} + +.content-format strong { + + font-weight: bold; + +} + +.content-format ul:not(.social-awesome) { + + list-style: disc outside; + + margin: 1.714285714rem 0 1.714285714rem; + + line-height: 1.714285714; + +} + +.content-format ul:not(.social-awesome) li { + + margin: 0 0 0 36px; + + margin: 0 1rem 0 2.571428571rem; + +} + +.content-format ul:not(.social-awesome).list-unstyled { + + list-style: none; + +} + +.content-format ul:not(.social-awesome).list-unstyled li { + + margin: 0 0 0 24px; + +} + +.content-format em { + + font-style: italic; + +} + +.content-format p { + + margin-bottom: 1.8em; + +} + +.content-format figure { + + margin-bottom: 42px; + +} + +.content-format figure .caption { + + color: #999; + + font-size: 14px; + +} + +.content-format img { + + border: 0; + + height: auto; + + max-width: 100%; + + vertical-align: middle; + +} + +.content-format .fa { + + color: #37a6c4; + + margin-right: 10px; + +} + +.content-format blockquote { + + border-left: 4px solid #c3c3c3; + + border-left: 4px solid rgba(51, 51, 51, 0.17); + + color: #707070; + + color: rgba(51, 51, 51, 0.7); + + font-size: 1.2em; + + font-style: italic; + + line-height: 1.6667; + + margin-bottom: 1em; + + padding-left: 0.7778em; + +} + +.content-format blockquote.double-quote { + + border-left: none; + + padding-left: 1em; + +} + +.content-format pre { + + background: #fff; + + border: 1px solid #ededed; + + color: #666; + + font-family: Consolas, Monaco, Lucida Console, monospace; + + font-size: .9em; + + line-height: 1.714285714; + + margin: 24px 0; + + margin: 1.714285714rem 0; + + overflow: auto; + +} + +.content-format ol { + + margin: 24px 0 24px; + + margin: 1.714285714rem 0 1.714285714rem; + + line-height: 1.714285714; + + list-style: decimal outside; + +} + +.content-format img.wp-smiley, + +.content-format img.emoji { + + display: inline !important; + + border: none !important; + + box-shadow: none !important; + + height: 1em !important; + + width: 1em !important; + + margin: 0 .07em !important; + + vertical-align: -0.1em !important; + + background: none !important; + + padding: 0 !important; + +} + +/* + + * Theme Struck - Harmony - Free responsive Bootstrap admin template by Themestruck.com (http://themestruck.com) + + * Code licensed under the MIT + + * For details, see # + + */ + +ul, + +li { + + margin: 0; + + padding: 0; + + list-style: none; + +} + +/* Social Button Modifications */ + +.btn { + + text-transform: none; + +} + +.btn-social > :first-child { + + width: 42px; + + line-height: 46px; + +} + +.btn-social { + + padding-left: 58px; + +} + +/* Circle buttons */ + +.btn-circle { + + width: 30px; + + height: 30px; + + padding: 6px 0; + + border-radius: 15px; + + text-align: center; + + font-size: 12px; + + line-height: 1.428571429; + +} + +.btn-circle.btn-lg { + + width: 50px; + + height: 50px; + + padding: 10px 16px; + + border-radius: 25px; + + font-size: 18px; + + line-height: 1.33; + +} + +.btn-circle.btn-xl { + + width: 70px; + + height: 70px; + + padding: 10px 16px; + + border-radius: 35px; + + font-size: 24px; + + line-height: 1.33; + +} + +/* Chart design */ + +/* Charts */ + +.chart-dot-list { + + display: block; + + margin-top: 60px; + + margin-left: 20px; + +} + +.chart-dot-list li { + + margin-bottom: 4px; + +} + +.chart-dot-list li:before { + + content: ''; + + height: 12px; + + width: 12px; + + margin-right: 6px; + + display: inline-block; + + background: #7BC3FC; + + border-radius: 50%; + +} + +.chart-dot-list li.a1:before { + + background: #F7464A; + +} + +.chart-dot-list li.a2:before { + + background: #46BFBD; + +} + +.chart-dot-list li.a3:before { + + background: #FDB45C; + +} + +.chart-doughnut { + + padding: 41px 0; + +} + +/* component */ + +.page-title { + + padding-bottom: 15px; + + margin-bottom: 20px; + + border-bottom: 1px solid #f0f0f0; + +} + +.brand { + + background: #009EFF; + + position: relative; + + z-index: 3; + + position: fixed; + + width: 100%; + + top: 0; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; +} + + + +@media only screen and (min-width: 992px) { + + .brand .logo { + + width: 250px; + + } + +} + +.brand .logo img { + + height: 20px; + +} + +.brand .menu-btn { + + float: right; + + background: #232d3b; + + text-align: center; + + cursor: pointer; + + color: #fff; + + padding: 20px 20px; + +} + +@media only screen and (min-width: 992px) { + + .brand .menu-btn { + + display: none; + + } + +} + +.brand .ts-profile-nav { + + float: right; + + display: none; + +} + +.brand .ts-profile-nav li { + + float: left; + + position: relative; + +} + +.brand .ts-profile-nav li a { + + display: block; + + padding: 20px; + + color: #fff; + +} + +.brand .ts-profile-nav li ul { + + visibility: hidden; + + opacity: 0; + + right: 0; + + position: absolute; + +} + +.brand .ts-profile-nav li ul li { + + float: none; + + width: 180px; + +} + +.brand .ts-profile-nav li ul li a { + + padding: 10px 20px; + + background: #7BC3FC; + +} + +.brand .ts-profile-nav .ts-account .fa-angle-down { + + float: right; + +} + +.brand .ts-profile-nav .ts-account > a { + + width: 180px; + + background: #009EFF; + +} + +.brand .ts-profile-nav .ts-account .ts-avatar { + + border-radius: 50%; + + height: 28px; + + margin: -10px 0; + + margin-right: 10px; + +} + +.brand .ts-profile-nav .ts-account:hover ul { + + visibility: visible; + + opacity: 1; + +} + +@media only screen and (min-width: 992px) { + + .brand .ts-profile-nav { + + display: block; + + } + +} + +.ts-sidebar::-webkit-scrollbar-track { + + background-color: transparent; + +} + +.ts-sidebar::-webkit-scrollbar { + + width: 5px; + + background-color: transparent; + +} + +.ts-sidebar::-webkit-scrollbar-thumb { + + background-color: #b4b4b4; + +} + +.ts-sidebar { + + background: #009EFF; + + max-height: 0; + + transition: max-height 0.3s; + + overflow: hidden; + + position: fixed; + + z-index: 2; + + width: 100%; + + bottom: 0; + + top: 60px; + + overflow-y: auto; + +} + +.ts-sidebar .hidden-side { + + display: none; + +} + +.ts-sidebar .ts-sidebar-search { + + width: 100%; + + background: #25292a; + + border: none; + + padding: 10px 15px; + + color: #fff; + +} + +@media only screen and (min-width: 992px) { + + .ts-sidebar .ts-profile-nav { + + display: none; + + } + +} + +@media only screen and (min-width: 992px) { + + .ts-sidebar { + + max-height: 100%; + + bottom: 0; + + } + +} + +.ts-sidebar-menu .ts-label { + + color: #ffffff; + + font-weight: bold; + + padding: 8px 15px; + + text-transform: uppercase; + + font-size: 10px; + + letter-spacing: 3px; + + margin-top: 10px; + +} + +.ts-sidebar-menu a { + + display: block; + + text-decoration: none; + + padding: 12px 15px; + + color: #fff; + +} + +.ts-sidebar-menu li { + + position: relative; + +} + +.ts-sidebar-menu li i { + + color: #ffffff; + + margin-right: 10px; + +} + +.ts-sidebar-menu li ul { + + display: block; + + background: rgba(255, 0, 0, 0.12); + + background: rgba(0, 0, 0, 0.32); + + max-height: 0; + + overflow: hidden; + + transition: all 0.3s ease; + width: 100%; + +} + +.menu-open, + +.ts-sidebar-menu .open > ul { + + max-height: 2000px; + +} + +.ts-sidebar-menu .open > a { + + background: rgba(51, 56, 62, 0.35); + +} + +.ts-sidebar-menu > .open > a { + + background: #33383e; + + border-left: 3px solid #37a6c4; + +} + +.ts-sidebar-menu .open > .more i { + + transform: rotate(180deg); + +} + +.more i { + + color: #fff; + + padding: 15px; + + transition: transform 0.3s; + +} + +.more { + + float: right; + + min-width: 10%; + + cursor: pointer; + +} + +.ts-main-content .content-wrapper { + + padding-top: 15px; + + margin-top: 60px; + +} + +@media only screen and (min-width: 992px) { + + .ts-main-content .ts-sidebar { + + width: 250px; + + float: left; + + } + + .ts-main-content .content-wrapper { + + margin-left: 250px; + + } + +} + +/* Login page */ + +.login-page { + + position: absolute; + + height: 100%; + + width: 100%; + +} + + + +.disabled { + pointer-events: none; +} + + +.panel-default { + border-color: #f2f2f2; +} +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border-radius: 4px; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); +} + +.panel:hover { + box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); +} +.panel-heading { + padding: 10px 15px; + +} + +.brand .logo { + width: 30px; + border-radius: 50%; +} \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/style.less b/PHP-SourceCode/admin/css/style.less new file mode 100644 index 0000000..0ddf339 --- /dev/null +++ b/PHP-SourceCode/admin/css/style.less @@ -0,0 +1,322 @@ +@import 'less/vars'; +@import 'less/components'; + +/* + * Theme Struck - Harmony - Free responsive Bootstrap admin template by Themestruck.com (http://themestruck.com) + * Code licensed under the MIT + * For details, see # + */ + +ul, +li { + margin: 0; + padding: 0; + list-style: none; +} + +/* Social Button Modifications */ +.btn{ + text-transform: none; +} +.btn-social>:first-child { + width: 42px; + line-height: 46px; +} +.btn-social { + padding-left: 58px; +} + +/* Circle buttons */ +.btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} + +/* Chart design */ +/* Charts */ +.chart-dot-list { + display: block; + margin-top: 60px; + margin-left: 20px; +} +.chart-dot-list li { + margin-bottom: 4px; +} +.chart-dot-list li:before { + content: ''; + height: 12px; + width: 12px; + margin-right: 6px; + display: inline-block; + background: #222; + border-radius: 50%; +} +.chart-dot-list li.a1:before { + background: #F7464A; +} +.chart-dot-list li.a2:before { + background: #46BFBD; +} +.chart-dot-list li.a3:before { + background: #FDB45C; +} +.chart-doughnut { + padding: 41px 0; +} + +/* component */ + +.page-title{ + padding-bottom: 15px; + margin-bottom: 20px; + border-bottom: 1px solid #f0f0f0; +} + +.brand{ +// padding: 10px; + background: #3e454c; + .logo{ + box-sizing: border-box; + padding: 20px; + float: left; + display: block; + width: 200px; + @media @desktop{ + width: 250px; + } + img{ + height: 20px; + } + } + .menu-btn { + float: right; + background: #232d3b; + text-align: center; + cursor: pointer; + color: #fff; + padding: 20px 20px; + @media @desktop{ + display: none; + } + } + .ts-profile-nav{ + float: right; + li{ + float: left; + a{ + display: block; + padding: 20px; + color: #fff; + } + position: relative; + ul{ + visibility: hidden; + opacity: 0; + right: 0; + position: absolute; + li{ + float: none; + width: 180px; + a{ + padding: 10px 20px; + background: #222; + } + } + } + } + .ts-account{ + .fa-angle-down{ + float: right; + } + &>a{ + width: 180px; + background: #2c3136; + } + .ts-avatar{ + border-radius: 50%; + height: 28px; + margin: -10px 0; + margin-right: 10px; + } + &:hover{ + ul{ + visibility: visible; + opacity: 1; + } + } + } + display: none; + @media @desktop{ + display: block; + } + } + + position: relative; + z-index: 3; + position: fixed; + width: 100%; + top: 0; +} + +.ts-sidebar::-webkit-scrollbar-track +{ + background-color: transparent; +} + +.ts-sidebar::-webkit-scrollbar +{ + width: 5px; + background-color: transparent; +} + +.ts-sidebar::-webkit-scrollbar-thumb +{ + background-color: #b4b4b4; +} + +.ts-sidebar{ + background: #2c3136; + .hidden-side{ + display: none; + } + .ts-sidebar-search{ + width: 100%; + background: #25292a; + border: none; + padding: 10px 15px; + color: #fff; + } + .ts-profile-nav{ + @media @desktop{ + display: none; + } + } + max-height: 0; + transition: max-height 0.3s; + overflow: hidden; + + + position: fixed; + z-index: 2; + width: 100%; + bottom: 0; + top: 60px; + overflow-y: auto; + + @media @desktop{ +// height: 100vh; + max-height: 100%; +// position: relative; +// top: 0; + bottom: 0; +// top: 0; + } + +} + +.ts-sidebar-menu { + .ts-label{ + color: #585c64; + font-weight: bold; + padding: 8px 15px; + text-transform: uppercase; + font-size: 10px; + letter-spacing: 3px; + margin-top: 10px; + } + a { + display: block; + text-decoration: none; + padding: 12px 15px; + color: #fff; + } + li { + position: relative; + i{ + color: #585c64; + margin-right: 10px; + } + ul { + display: block; + background: rgba(255, 0, 0, 0.12); + background: rgba(0, 0, 0, 0.32); + max-height: 0; + overflow: hidden; + transition: all 0.3s ease; + } + } +} + +.menu-open, +.ts-sidebar-menu .open > ul { + max-height: 2000px; +} +.ts-sidebar-menu .open{ + &>a{ + background: rgba(51, 56, 62, 0.35); + } +} +.ts-sidebar-menu > .open{ + &>a{ + background: #33383e; + border-left: 3px solid @color1; + } +} + +.ts-sidebar-menu .open > .more i { + transform: rotate(180deg); +} +.more i { + color: #fff; + padding: 15px; + transition: transform 0.3s; +} +.more { + float: right; + min-width: 10%; + cursor: pointer; +} + +.ts-main-content{ + .content-wrapper{ + padding-top: 15px; + margin-top: 60px; + } + @media @desktop{ + .ts-sidebar{ + width: 250px; + float: left; + } + .content-wrapper{ + margin-left: 250px; + } + } +} + +/* Login page */ +.login-page{ + position: absolute; + height: 100%; + width: 100%; +} \ No newline at end of file diff --git a/PHP-SourceCode/admin/css/summernote.min.css b/PHP-SourceCode/admin/css/summernote.min.css new file mode 100644 index 0000000..c278359 --- /dev/null +++ b/PHP-SourceCode/admin/css/summernote.min.css @@ -0,0 +1 @@ +@font-face{font-display:auto;font-family:summernote;font-style:normal;font-weight:400;src:url(../fonts/summernote.eot?#iefix) format("embedded-opentype"),url(../fonts/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(../fonts/summernote.ttf) format("truetype")}[class*=" note-icon"]:before,[class^=note-icon]:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none;display:inline-block;font-family:summernote;font-size:inherit;font-style:normal;text-decoration:inherit;text-transform:none;vertical-align:middle}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:"\ea01"}.note-icon-align-center:before{content:"\ea02"}.note-icon-align-indent:before{content:"\ea03"}.note-icon-align-justify:before{content:"\ea04"}.note-icon-align-left:before{content:"\ea05"}.note-icon-align-outdent:before{content:"\ea06"}.note-icon-align-right:before{content:"\ea07"}.note-icon-arrow-circle-down:before{content:"\ea08"}.note-icon-arrow-circle-left:before{content:"\ea09"}.note-icon-arrow-circle-right:before{content:"\ea0a"}.note-icon-arrow-circle-up:before{content:"\ea0b"}.note-icon-arrows-alt:before{content:"\ea0c"}.note-icon-arrows-h:before{content:"\ea0d"}.note-icon-arrows-v:before{content:"\ea0e"}.note-icon-bold:before{content:"\ea0f"}.note-icon-caret:before{content:"\ea10"}.note-icon-chain-broken:before{content:"\ea11"}.note-icon-circle:before{content:"\ea12"}.note-icon-close:before{content:"\ea13"}.note-icon-code:before{content:"\ea14"}.note-icon-col-after:before{content:"\ea15"}.note-icon-col-before:before{content:"\ea16"}.note-icon-col-remove:before{content:"\ea17"}.note-icon-eraser:before{content:"\ea18"}.note-icon-float-left:before{content:"\ea19"}.note-icon-float-none:before{content:"\ea1a"}.note-icon-float-right:before{content:"\ea1b"}.note-icon-font:before{content:"\ea1c"}.note-icon-frame:before{content:"\ea1d"}.note-icon-italic:before{content:"\ea1e"}.note-icon-link:before{content:"\ea1f"}.note-icon-magic:before{content:"\ea20"}.note-icon-menu-check:before{content:"\ea21"}.note-icon-minus:before{content:"\ea22"}.note-icon-orderedlist:before{content:"\ea23"}.note-icon-pencil:before{content:"\ea24"}.note-icon-picture:before{content:"\ea25"}.note-icon-question:before{content:"\ea26"}.note-icon-redo:before{content:"\ea27"}.note-icon-rollback:before{content:"\ea28"}.note-icon-row-above:before{content:"\ea29"}.note-icon-row-below:before{content:"\ea2a"}.note-icon-row-remove:before{content:"\ea2b"}.note-icon-special-character:before{content:"\ea2c"}.note-icon-square:before{content:"\ea2d"}.note-icon-strikethrough:before{content:"\ea2e"}.note-icon-subscript:before{content:"\ea2f"}.note-icon-summernote:before{content:"\ea30"}.note-icon-superscript:before{content:"\ea31"}.note-icon-table:before{content:"\ea32"}.note-icon-text-height:before{content:"\ea33"}.note-icon-trash:before{content:"\ea34"}.note-icon-underline:before{content:"\ea35"}.note-icon-undo:before{content:"\ea36"}.note-icon-unorderedlist:before{content:"\ea37"}.note-icon-video:before{content:"\ea38"}.note-editor{position:relative}.note-editor .note-dropzone{background-color:#fff;color:#87cefa;display:none;opacity:.95;position:absolute;z-index:100}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:700;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid #00000032}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{word-wrap:break-word;overflow:auto;padding:10px}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{background-color:#222;border:none;border-radius:0;box-shadow:none;-ms-box-sizing:border-box;box-sizing:border-box;color:#ccc;display:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;margin-bottom:0;outline:none;padding:10px;resize:none;width:100%}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{left:0;position:fixed;top:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{border:0;border-top:1px solid #e2e2e2;color:#000;display:block;font-size:14px;height:20px;line-height:1.42857143;margin-bottom:0;width:100%}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{border-top:0 solid transparent;height:0}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{background-color:#f5f5f5;border-radius:0;color:#000;margin:-7px 0 0;padding:7px 10px 2px}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{background-color:#dff0d8!important;color:#3c763d!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{background-color:#d9edf7!important;color:#31708f!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{background-color:#fcf8e3!important;color:#8a6d3b!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{background-color:#f2dede!important;color:#a94442!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{cursor:ns-resize;height:9px;padding-top:1px;width:100%}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{border-top:1px solid #00000032;margin:1px auto;width:20px}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-left:0;margin-right:5px;margin-top:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{cursor:pointer;height:10em;position:absolute!important;width:10em;z-index:3}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat;height:5em;position:relative!important;width:5em;z-index:1}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat;height:1em;position:absolute!important;width:1em;z-index:2}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{padding-left:5px;width:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{border-bottom:1px solid #eee;font-size:12px;margin:2px 7px;text-align:center}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{border-radius:5px;cursor:pointer;font-size:11px;margin:3px;padding:0 3px;width:100%}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{left:auto;right:0}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{left:auto!important;right:9px}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{left:auto!important;right:10px}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{border:0;border-radius:0;height:20px;margin:0;padding:0;width:20px}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{border:4px dashed #d3d3d3;color:#d3d3d3;font-size:30px;line-height:4;margin-bottom:10px;min-height:100px;text-align:center}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{color:gray;display:none;position:absolute}.note-handle .note-control-selection{border:1px solid #000;display:none;position:absolute}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{background-color:#000;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30);height:100%;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;width:100%}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{border:1px solid #000;height:7px;width:7px}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{border-bottom:none;border-right:none;left:-5px;top:-5px}.note-handle .note-control-selection .note-control-ne{border-bottom:none;border-left:none;right:-5px;top:-5px}.note-handle .note-control-selection .note-control-sw{border-right:none;border-top:none;bottom:-5px;left:-5px}.note-handle .note-control-selection .note-control-se{bottom:-5px;cursor:se-resize;right:-5px}.note-handle .note-control-selection .note-control-se.note-control-holder{border-left:none;border-top:none;cursor:default}.note-handle .note-control-selection .note-control-selection-info{background-color:#000;border-radius:5px;bottom:0;color:#fff;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70);font-size:12px;margin:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;padding:5px;right:0}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;overflow:auto;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{background-color:#428bca;clear:both;color:#fff;cursor:pointer;display:block;font-weight:400;line-height:1.4;outline:0;text-decoration:none;white-space:nowrap}body .note-fullscreen-body,html .note-fullscreen-body{overflow:hidden!important} \ No newline at end of file diff --git a/PHP-SourceCode/admin/dashboard.php b/PHP-SourceCode/admin/dashboard.php new file mode 100644 index 0000000..bce077c --- /dev/null +++ b/PHP-SourceCode/admin/dashboard.php @@ -0,0 +1,336 @@ +setTitle("Your Order Status"); + $push->setImage(''); + $push->setIsBackground(FALSE); + $push->setPayload($payload); + + global $firebase_token; +if(isset($_REQUEST['mobile'])){ + $mobile=$_GET['mobile']; + $sql = "SELECT firebase_token FROM users WHERE mobile=:mobile"; + $stmt = $dbh->prepare($sql); + $stmt->bindParam("mobile", $mobile,PDO::PARAM_STR); + $stmt->execute(); + $firebase_token = $stmt->fetch(PDO::FETCH_OBJ); + $regId = $firebase_token->firebase_token; +} + +if(isset($_REQUEST['confirmid'])) + { +$eid=intval($_GET['confirmid']); +$status='Confirmed'; +$sql = "UPDATE orders SET status=:status WHERE id=:eid"; +$query = $dbh->prepare($sql); +$query -> bindParam(':status',$status, PDO::PARAM_STR); +$query-> bindParam(':eid',$eid, PDO::PARAM_STR); +$query -> execute(); + $push->setMessage("Your order has been confirmed. We will Contact you soon."); + $json = $push->getPush(); + $response = $firebase->send($regId, $json); +$msg="Status Updated Sucessfully"; + +} +if(isset($_REQUEST['prepareid'])) + { +$eid=intval($_GET['prepareid']); +$status='Preparing'; +$sql = "UPDATE orders SET status=:status WHERE id=:eid"; +$query = $dbh->prepare($sql); +$query -> bindParam(':status',$status, PDO::PARAM_STR); +$query-> bindParam(':eid',$eid, PDO::PARAM_STR); +$query -> execute(); + $push->setMessage("Your order has been packed and waiting for delivery boy"); + $json = $push->getPush(); + $response = $firebase->send($regId, $json); +$msg="Status Updated Sucessfully"; +} +if(isset($_REQUEST['wayid'])) + { +$eid=intval($_GET['wayid']); +$status='On Way'; +$sql = "UPDATE orders SET status=:status WHERE id=:eid"; +$query = $dbh->prepare($sql); +$query -> bindParam(':status',$status, PDO::PARAM_STR); +$query-> bindParam(':eid',$eid, PDO::PARAM_STR); +$query -> execute(); + $push->setMessage("Your order is on the way. Our delivery boy will contact you soon."); + $json = $push->getPush(); + $response = $firebase->send($regId, $json); +$msg="Status Updated Sucessfully"; +} +if(isset($_REQUEST['deliveredid'])) + { +$eid=intval($_GET['deliveredid']); +$status='Delivered'; +$sql = "UPDATE orders SET status=:status WHERE id=:eid"; +$query = $dbh->prepare($sql); +$query -> bindParam(':status',$status, PDO::PARAM_STR); +$query-> bindParam(':eid',$eid, PDO::PARAM_STR); +$query -> execute(); + $push->setMessage("Your order has been delivered SUccessfully. Thank you for shopping."); + $json = $push->getPush(); + $response = $firebase->send($regId, $json); +$msg="Status Updated Sucessfully"; +} + + +?> + + + + + + + + + + + Drug Store | Admin Dashboard + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

Dashboard +

+
+
+
+
+
+
+
+ prepare($sql); + $query->execute(); + $results=$query->fetchAll(PDO::FETCH_OBJ); + $bg=$query->rowCount(); + ?> +
+ +
+
Orders +
+
+
+ Full Detail + + + +
+
+
+
+
+
+ prepare($sql1);; + $query1->execute(); + $results1=$query1->fetchAll(PDO::FETCH_OBJ); + $regbd=$query1->rowCount(); + ?> +
+ +
+
Items +
+
+
+ Full Detail   + + + +
+
+ +
+
+
+
+ prepare($sql); + $query->execute(); + $results=$query->fetchAll(PDO::FETCH_OBJ); + $regbd=$query->rowCount(); + ?> +
+ +
+
Pending +
+
+
+ Full Detail   + + + +
+
+
+
+
+
+ prepare($sql6);; + $query6->execute(); + $results6=$query6->fetchAll(PDO::FETCH_OBJ); + $query=$query6->rowCount(); + ?> +
+ +
+
Users +
+
+
+ Full Detail   + + + +
+
+
+
+
+
+
+

Recent Orders

+
+ +
+
+
Orders
+
+
ERROR:
SUCCESS:
+ + + + + + + + + + + + + + + + prepare($sql); + $query->execute(); + $results=$query->fetchAll(PDO::FETCH_OBJ); + $cnt=1; + if($query->rowCount() > 0) + { + foreach($results as $result) + { ?> + + + + + + + + + + + + + +
OrderIDNameMobile NumberemailAddressStatusAction
id);?>name);?>mobile);?>email);?>address);?>status);?>View Order +
+
+
+ +
+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + diff --git a/PHP-SourceCode/admin/fetch-product-image.php b/PHP-SourceCode/admin/fetch-product-image.php new file mode 100644 index 0000000..9af7005 --- /dev/null +++ b/PHP-SourceCode/admin/fetch-product-image.php @@ -0,0 +1,26 @@ + prepare($sql); + $query->execute(); + $results=$query->fetchAll(PDO::FETCH_OBJ); + + echo json_encode($results); + +?> \ No newline at end of file diff --git a/PHP-SourceCode/admin/fetch-subcategory-by-category.php b/PHP-SourceCode/admin/fetch-subcategory-by-category.php new file mode 100644 index 0000000..1f9ed30 --- /dev/null +++ b/PHP-SourceCode/admin/fetch-subcategory-by-category.php @@ -0,0 +1,35 @@ + prepare($sql); + $query->execute(); + $results=$query->fetchAll(PDO::FETCH_OBJ); + + ?> + + rowCount() > 0) + { + foreach($results as $result) + { ?> + + + +?> \ No newline at end of file diff --git a/PHP-SourceCode/admin/firebase/config.php b/PHP-SourceCode/admin/firebase/config.php new file mode 100644 index 0000000..cb20193 --- /dev/null +++ b/PHP-SourceCode/admin/firebase/config.php @@ -0,0 +1,5 @@ + $to, + 'data' => $message, + ); + return $this->sendPushNotification($fields); + } + + // Sending message to a topic by topic name + public function sendToTopic($to, $message) { + $fields = array( + 'to' => '/topics/' . $to, + 'data' => $message, + ); + return $this->sendPushNotification($fields); + } + + // sending push message to multiple users by firebase registration ids + public function sendMultiple($registration_ids, $message) { + $fields = array( + 'to' => $registration_ids, + 'data' => $message, + ); + + return $this->sendPushNotification($fields); + } + + // function makes curl request to firebase servers + private function sendPushNotification($fields) { + + require_once __DIR__ . '/config.php'; + + // Set POST variables + $url = 'https://fcm.googleapis.com/fcm/send'; + + $headers = array( + 'Authorization: key=' . FIREBASE_API_KEY, + 'Content-Type: application/json' + ); + // Open connection + $ch = curl_init(); + + // Set the url, number of POST vars, POST data + curl_setopt($ch, CURLOPT_URL, $url); + + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + // Disabling SSL Certificate support temporarly + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); + + // Execute post + $result = curl_exec($ch); + if ($result === FALSE) { + die('Curl failed: ' . curl_error($ch)); + } + + // Close connection + curl_close($ch); + + return $result; + } +} + +?> diff --git a/PHP-SourceCode/admin/firebase/index.php b/PHP-SourceCode/admin/firebase/index.php new file mode 100644 index 0000000..e45a7d3 --- /dev/null +++ b/PHP-SourceCode/admin/firebase/index.php @@ -0,0 +1 @@ +

404 Not Found

diff --git a/PHP-SourceCode/admin/firebase/push.php b/PHP-SourceCode/admin/firebase/push.php new file mode 100644 index 0000000..9ae43ce --- /dev/null +++ b/PHP-SourceCode/admin/firebase/push.php @@ -0,0 +1,56 @@ +title = $title; + } + + public function setMessage($message) { + $this->message = $message; + } + + public function setImage($imageUrl) { + $this->image = $imageUrl; + } + + public function setPayload($data) { + $this->data = $data; + } + + public function setIsBackground($is_background) { + $this->is_background = $is_background; + } + + public function getPush() { + $res = array(); + $res['data']['title'] = $this->title; + $res['data']['is_background'] = $this->is_background; + $res['data']['message'] = $this->message; + $res['data']['image'] = $this->image; + $res['data']['payload'] = $this->data; + $res['data']['timestamp'] = date('Y-m-d G:i:s'); + return $res; + } + +} diff --git a/PHP-SourceCode/admin/fonts/FontAwesome.otf b/PHP-SourceCode/admin/fonts/FontAwesome.otf new file mode 100644 index 0000000..0bdfab9 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/FontAwesome.otf differ diff --git a/PHP-SourceCode/admin/fonts/fontawesome-webfont.eot b/PHP-SourceCode/admin/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..be40304 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/fontawesome-webfont.eot differ diff --git a/PHP-SourceCode/admin/fonts/fontawesome-webfont.svg b/PHP-SourceCode/admin/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..4e428bc --- /dev/null +++ b/PHP-SourceCode/admin/fonts/fontawesome-webfont.svg @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PHP-SourceCode/admin/fonts/fontawesome-webfont.ttf b/PHP-SourceCode/admin/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..d7994e1 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/fontawesome-webfont.ttf differ diff --git a/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff b/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..4b5e150 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff differ diff --git a/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff2 b/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..983cae6 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/fontawesome-webfont.woff2 differ diff --git a/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.eot b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..0072805 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.eot differ diff --git a/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.svg b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..c183ff1 --- /dev/null +++ b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.ttf b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..055d79b Binary files /dev/null and b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.ttf differ diff --git a/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..59cf6f4 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff differ diff --git a/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff2 b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..323b360 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/PHP-SourceCode/admin/fonts/summernote.eot b/PHP-SourceCode/admin/fonts/summernote.eot new file mode 100644 index 0000000..bd5e561 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/summernote.eot differ diff --git a/PHP-SourceCode/admin/fonts/summernote.hash b/PHP-SourceCode/admin/fonts/summernote.hash new file mode 100644 index 0000000..05a135b --- /dev/null +++ b/PHP-SourceCode/admin/fonts/summernote.hash @@ -0,0 +1 @@ +9fe8a4284ea6542e5b857380d2288fbd \ No newline at end of file diff --git a/PHP-SourceCode/admin/fonts/summernote.ttf b/PHP-SourceCode/admin/fonts/summernote.ttf new file mode 100644 index 0000000..4fc4e91 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/summernote.ttf differ diff --git a/PHP-SourceCode/admin/fonts/summernote.woff b/PHP-SourceCode/admin/fonts/summernote.woff new file mode 100644 index 0000000..69cda61 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/summernote.woff differ diff --git a/PHP-SourceCode/admin/fonts/summernote.woff2 b/PHP-SourceCode/admin/fonts/summernote.woff2 new file mode 100644 index 0000000..6758053 Binary files /dev/null and b/PHP-SourceCode/admin/fonts/summernote.woff2 differ diff --git a/PHP-SourceCode/admin/img/logo.png b/PHP-SourceCode/admin/img/logo.png new file mode 100644 index 0000000..3b6d356 Binary files /dev/null and b/PHP-SourceCode/admin/img/logo.png differ diff --git a/PHP-SourceCode/admin/img/members/default.png b/PHP-SourceCode/admin/img/members/default.png new file mode 100644 index 0000000..b89587a Binary files /dev/null and b/PHP-SourceCode/admin/img/members/default.png differ diff --git a/PHP-SourceCode/admin/includes/config.php b/PHP-SourceCode/admin/includes/config.php new file mode 100644 index 0000000..47f219f --- /dev/null +++ b/PHP-SourceCode/admin/includes/config.php @@ -0,0 +1,18 @@ + "SET NAMES 'utf8'")); +} +catch (PDOException $e) +{ +exit("Error: " . $e->getMessage()); +} +?> diff --git a/PHP-SourceCode/admin/includes/header.php b/PHP-SourceCode/admin/includes/header.php new file mode 100644 index 0000000..3426ad7 --- /dev/null +++ b/PHP-SourceCode/admin/includes/header.php @@ -0,0 +1,28 @@ +
+ +

Drug Store

+ + + + + +
+ diff --git a/PHP-SourceCode/admin/includes/leftbar.php b/PHP-SourceCode/admin/includes/leftbar.php new file mode 100644 index 0000000..d1f20f3 --- /dev/null +++ b/PHP-SourceCode/admin/includes/leftbar.php @@ -0,0 +1,129 @@ + diff --git a/PHP-SourceCode/admin/index.php b/PHP-SourceCode/admin/index.php new file mode 100644 index 0000000..0e848cc --- /dev/null +++ b/PHP-SourceCode/admin/index.php @@ -0,0 +1,181 @@ + prepare($sql); + +$query-> bindParam(':email', $email, PDO::PARAM_STR); + +$query-> bindParam(':password', $password, PDO::PARAM_STR); + +$query-> execute(); + +$results=$query->fetchAll(PDO::FETCH_OBJ); + +if($query->rowCount() > 0) + +{ + +$_SESSION['alogin']=$_POST['username']; + +echo ""; + +} else{ + + + + echo ""; + + + +} + + + +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PHP-SourceCode/admin/js/Chart.min.js b/PHP-SourceCode/admin/js/Chart.min.js new file mode 100644 index 0000000..99d4b84 --- /dev/null +++ b/PHP-SourceCode/admin/js/Chart.min.js @@ -0,0 +1,11 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 1.0.2 + * + * Copyright 2015 Nick Downie + * Released under the MIT license + * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md + */ +(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;var i=function(t,i){return t["offset"+i]?t["offset"+i]:document.defaultView.getComputedStyle(t).getPropertyValue(i)},e=this.width=i(t.canvas,"Width")||t.canvas.width,n=this.height=i(t.canvas,"Height")||t.canvas.height;return e=this.width=t.canvas.width,n=this.height=t.canvas.height,this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipTitleTemplate:"<%= label%>",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= datasetLabel %>: <%= value %>",multiTooltipKeyBackground:"#fff",segmentColorDefault:["#A6CEE3","#1F78B4","#B2DF8A","#33A02C","#FB9A99","#E31A1C","#FDBF6F","#FF7F00","#CAB2D6","#6A3D9A","#B4B482","#B15928"],segmentHighlightColorDefaults:["#CEF6FF","#47A0DC","#DAFFB2","#5BC854","#FFC2C1","#FF4244","#FFE797","#FFA728","#F2DAFE","#9265C2","#DCDCAA","#D98150"],onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof define&&define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){if(t%1!==0&&f(t)){var i=t.toString();if(i.indexOf("e-")<0)return i.split(".")[1].length;if(i.indexOf(".")<0)return parseInt(i.split("e-")[1]);var e=i.split(".")[1].split("e-");return e[0].length+parseInt(e[1])}return 0}),S=s.radians=function(t){return t*(Math.PI/180)},x=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,o){var a=2,h=Math.floor(i/(1.5*e)),l=a>=h,r=[];n(t,function(t){null==t||r.push(t)});var c=m(r),u=g(r);u===c&&(u+=.5,c>=.5&&!s?c-=.5:u+=.5);for(var d=Math.abs(u-c),p=y(d),f=Math.ceil(u/(1*Math.pow(10,p)))*Math.pow(10,p),v=s?0:Math.floor(c/(1*Math.pow(10,p)))*Math.pow(10,p),S=f-v,x=Math.pow(10,p),C=Math.round(S/x);(C>h||h>2*C)&&!l;)if(C>h)x*=2,C=Math.round(S/x),C%1!==0&&(l=!0);else if(o&&p>=0){if(x/2%1!==0)break;x/=2,C=Math.round(S/x)}else x/=2,C=Math.round(S/x);return l&&(C=a,x=S/C),{steps:C,stepValue:x,min:v,max:v+C*x}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),b=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return t&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),st?-.5*(s*Math.pow(2,10*(t-=1))*Math.sin((1*t-i)*(2*Math.PI)/e)):s*Math.pow(2,-10*(t-=1))*Math.sin((1*t-i)*(2*Math.PI)/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*(t*t*(((i*=1.525)+1)*t-i)):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-b.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*b.easeInBounce(2*t):.5*b.easeOutBounce(2*t-1)+.5}}),w=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=(s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),s.animationLoop=function(t,i,e,s,n,o){var a=0,h=b[e]||b.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=w(l):n.apply(o)};w(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),L=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},k=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},P(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){L(t.chart.canvas,e,i)})}),F=s.getMaximumWidth=function(t){var i=t.parentNode,e=parseInt(R(i,"padding-left"))+parseInt(R(i,"padding-right"));return i?i.clientWidth-e:0},A=s.getMaximumHeight=function(t){var i=t.parentNode,e=parseInt(R(i,"padding-bottom"))+parseInt(R(i,"padding-top"));return i?i.clientHeight-e:0},R=s.getStyle=function(t,i){return t.currentStyle?t.currentStyle[i]:document.defaultView.getComputedStyle(t,null).getPropertyValue(i)},T=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),M=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},W=s.fontString=function(t,i,e){return i+" "+t+"px "+e},z=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},B=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return M(this.chart),this},stop:function(){return e.animationService.cancelAnimation(this),this},resize:function(t){this.stop();var i=this.chart.canvas,e=F(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:A(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,T(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){if(t&&this.reflow(),this.options.animation&&!t){var i=new e.Animation;i.numSteps=this.options.animationSteps,i.easing=this.options.animationEasing,i.render=function(t,i){var e=s.easingEffects[i.easing],n=i.currentStep/i.numSteps,o=e(n);t.draw(o,n,i.currentStep)},i.onAnimationProgress=this.options.onAnimationProgress,i.onAnimationComplete=this.options.onAnimationComplete,e.animationService.addAnimation(this,i)}else this.draw(),this.options.onAnimationComplete.call(this);return this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),k(this,this.events);var t=this.chart.canvas;t.width=this.chart.width,t.height=this.chart.height,t.style.removeProperty?(t.style.removeProperty("width"),t.style.removeProperty("height")):(t.style.removeAttribute("width"),t.style.removeAttribute("height")),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),this.options.customTooltips&&this.options.customTooltips(!1),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(t){var i,e,n,o,a,l=[],r=[],d=[];return s.each(this.datasets,function(t){i=t.points||t.bars||t.segments,i[h]&&i[h].hasValue()&&l.push(i[h])}),s.each(l,function(t){r.push(t.x),d.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),a=m(d),n=g(d),o=m(r),e=g(r),{x:o>this.chart.width/2?o:e,y:(a+n)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:C(this.options.tooltipTitleTemplate,t[0]),chart:this.chart,ctx:this.chart.ctx,custom:this.options.customTooltips}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart,custom:this.options.customTooltips}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)a?a>=n||n>=o:n>=o&&a>=n,l=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return h&&l},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius<0?0:this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius<0?0:this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Animation=e.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=this.caretPadding=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;if(t.fillStyle=this.fillColor,this.custom)this.custom(this);else{switch(this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}B(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=W(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.titleHeight=this.title?1.5*this.titleFontSize:0,this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+this.titleHeight,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=z(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleHeight/3:i+(1.5*this.fontSize*e+this.fontSize/2)+this.titleHeight},draw:function(){if(this.custom)this.custom(this);else{B(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?z(this.ctx,this.font,this.yLabels)+10:0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint,e=this.endPoint-this.startPoint;for(this.calculateYRange(e),this.buildYLabels(),this.calculateXLabelRotation();e>this.endPoint-this.startPoint;)e=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(e),this.buildYLabels(),tthis.yLabelWidth?e/2:this.yLabelWidth,this.xLabelRotation=0,this.display){var n,o=z(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(S(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(S(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/Math.max(this.valuesCount-(this.offsetGridLines?0:1),1),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a),l=this.showHorizontalLines;t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),0!==o||l||(l=!0),l&&t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),l&&(t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+x(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+x(this.lineWidth),o=this.xLabelRotation>0,a=this.showVerticalLines;0!==e||a||(a=!0),a&&t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),a&&(t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*S(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;ip&&(p=t.x+s,n=i),t.x-sp&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a=0;i--){var e=null,s=null;if(this.angleLineWidth>0&&(e=this.calculateCenterOffset(this.max),s=this.getPointPosition(i,e),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(s.x,s.y),t.stroke(),t.closePath()),this.backgroundColors&&this.backgroundColors.length==this.valuesCount){null==e&&(e=this.calculateCenterOffset(this.max)),null==s&&(s=this.getPointPosition(i,e));var o=this.getPointPosition(0===i?this.valuesCount-1:i-1,e),a=this.getPointPosition(i===this.valuesCount-1?0:i+1,e),h={x:(o.x+s.x)/2,y:(o.y+s.y)/2},l={x:(s.x+a.x)/2,y:(s.y+a.y)/2};t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(h.x,h.y),t.lineTo(s.x,s.y),t.lineTo(l.x,l.y),t.fillStyle=this.backgroundColors[i],t.fill(),t.closePath()}var r=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var c=this.labels.length,u=this.labels.length/2,d=u/2,p=d>i||i>c-d,f=i===d||i===c-d;0===i?t.textAlign="center":i===u?t.textAlign="center":u>i?t.textAlign="left":t.textAlign="right",f?t.textBaseline="middle":p?t.textBaseline="bottom":t.textBaseline="top",t.fillText(this.labels[i],r.x,r.y)}}}}}),e.animationService={frameDuration:17,animations:[],dropFrames:0,addAnimation:function(t,i){for(var e=0;e1&&(i=Math.floor(this.dropFrames),this.dropFrames-=i);for(var e=0;ethis.animations[e].animationObject.numSteps&&(this.animations[e].animationObject.currentStep=this.animations[e].animationObject.numSteps),this.animations[e].animationObject.render(this.animations[e].chartInstance,this.animations[e].animationObject),this.animations[e].animationObject.currentStep==this.animations[e].animationObject.numSteps&&(this.animations[e].animationObject.onAnimationComplete.call(this.animations[e].chartInstance),this.animations.splice(e,1),e--);var n=Date.now(),o=n-t-this.frameDuration,a=o/this.frameDuration;a>1&&(this.dropFrames+=a),this.animations.length>0&&s.requestAnimFrame.call(window,this.digestWrapper)}},s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define("Chart",[],function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'
    <% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>
'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing; +return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i,s){var n={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(n),e.each(i.data,function(e,s){n.bars.push(new this.BarClass({value:e,label:t.labels[s],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<% for (var i=0; i
  • <%if(segments[i].label){%><%=segments[i].label%><%}%>
  • <%}%>'};i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(i,e){i.color||(i.color="hsl("+360*e/t.length+", 100%, 50%)"),this.addData(i,e,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,e,s){var n=void 0!==e?e:this.segments.length;"undefined"==typeof t.color&&(t.color=i.defaults.global.segmentColorDefault[n%i.defaults.global.segmentColorDefault.length],t.highlight=i.defaults.global.segmentHighlightColorDefaults[n%i.defaults.global.segmentHighlightColorDefaults.length]),this.segments.splice(n,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),s||(this.reflow(),this.update())},calculateCircumference:function(t){return this.total>0?2*Math.PI*(t/this.total):0},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=Math.abs(t.value)},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>',offsetGridLines:!1};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({offsetGridLines:this.options.offsetGridLines,strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)0&&ithis.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.ythis.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this))}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    '};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backgroundColors:this.options.scaleBackgroundColors,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,datasetLabel:this.datasets[e].label,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,this.options.datasetFill&&s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this); \ No newline at end of file diff --git a/PHP-SourceCode/admin/js/bootstrap-select.js b/PHP-SourceCode/admin/js/bootstrap-select.js new file mode 100644 index 0000000..07b0c41 --- /dev/null +++ b/PHP-SourceCode/admin/js/bootstrap-select.js @@ -0,0 +1,1592 @@ +(function ($) { + 'use strict'; + + // + if (!String.prototype.includes) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var toString = {}.toString; + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var indexOf = ''.indexOf; + var includes = function (search) { + if (this == null) { + throw TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + return indexOf.call(string, searchString, pos) != -1; + }; + if (defineProperty) { + defineProperty(String.prototype, 'includes', { + 'value': includes, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.includes = includes; + } + }()); + } + + if (!String.prototype.startsWith) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var toString = {}.toString; + var startsWith = function (search) { + if (this == null) { + throw TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + var index = -1; + while (++index < searchLength) { + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { + return false; + } + } + return true; + }; + if (defineProperty) { + defineProperty(String.prototype, 'startsWith', { + 'value': startsWith, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.startsWith = startsWith; + } + }()); + } + + if (!Object.keys) { + Object.keys = function ( + o, // object + k, // key + r // result array + ){ + // initialize object and result + r=[]; + // iterate over object keys + for (k in o) + // fill result array with non-prototypical keys + r.hasOwnProperty.call(o, k) && r.push(k); + // return result + return r + }; + } + // + + // Case insensitive contains search + $.expr[':'].icontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case insensitive begins search + $.expr[':'].ibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + // Case and accent insensitive contains search + $.expr[':'].aicontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case and accent insensitive begins search + $.expr[':'].aibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + /** + * Remove all diatrics from the given text. + * @access private + * @param {String} text + * @returns {String} + */ + function normalizeToBase(text) { + var rExps = [ + {re: /[\xC0-\xC6]/g, ch: "A"}, + {re: /[\xE0-\xE6]/g, ch: "a"}, + {re: /[\xC8-\xCB]/g, ch: "E"}, + {re: /[\xE8-\xEB]/g, ch: "e"}, + {re: /[\xCC-\xCF]/g, ch: "I"}, + {re: /[\xEC-\xEF]/g, ch: "i"}, + {re: /[\xD2-\xD6]/g, ch: "O"}, + {re: /[\xF2-\xF6]/g, ch: "o"}, + {re: /[\xD9-\xDC]/g, ch: "U"}, + {re: /[\xF9-\xFC]/g, ch: "u"}, + {re: /[\xC7-\xE7]/g, ch: "c"}, + {re: /[\xD1]/g, ch: "N"}, + {re: /[\xF1]/g, ch: "n"} + ]; + $.each(rExps, function () { + text = text.replace(this.re, this.ch); + }); + return text; + } + + + function htmlEscape(html) { + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', + testRegexp = new RegExp(source), + replaceRegexp = new RegExp(source, 'g'), + string = html == null ? '' : '' + html; + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { + return escapeMap[match]; + }) : string; + } + + var Selectpicker = function (element, options, e) { + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.$lis = null; + this.options = options; + + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + //Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.remove; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.7.2'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results matched {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + doneButton: false, + doneButtonText: 'Close', + multipleSeparator: ', ', + styleBase: 'btn', + style: 'btn-default', + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + liveSearchPlaceholder: null, + liveSearchNormalize: false, + liveSearchStyle: 'contains', + actionsBox: false, + iconBase: 'glyphicon', + tickIcon: 'glyphicon-ok', + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + this.$element.addClass('bs-select-hidden'); + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]') + this.liObj = {}; + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createView(); + this.$element.after(this.$newElement); + this.$button = this.$newElement.children('button'); + this.$menu = this.$newElement.children('.dropdown-menu'); + this.$menuInner = this.$menu.children('.inner'); + this.$searchbox = this.$menu.find('input'); + + if (this.options.dropdownAlignRight) + this.$menu.addClass('dropdown-menu-right'); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + $('label[for="' + id + '"]').click(function (e) { + e.preventDefault(); + that.$button.focus(); + }); + } + + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.setStyle(); + this.setWidth(); + if (this.options.container) this.selectPosition(); + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + + this.$newElement.on('hide.bs.dropdown', function (e) { + that.$element.trigger('hide.bs.select', e); + }); + + this.$newElement.on('hidden.bs.dropdown', function (e) { + that.$element.trigger('hidden.bs.select', e); + }); + + this.$newElement.on('show.bs.dropdown', function (e) { + that.$element.trigger('show.bs.select', e); + }); + + this.$newElement.on('shown.bs.dropdown', function (e) { + that.$element.trigger('shown.bs.select', e); + }); + + setTimeout(function () { + that.$element.trigger('loaded.bs.select'); + }); + }, + + createDropdown: function () { + // Options + // If we are multiple, then add the show-tick class by default + var multiple = this.multiple ? ' show-tick' : '', + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', + autofocus = this.autofocus ? ' autofocus' : ''; + // Elements + var header = this.options.header ? '
    ' + this.options.header + '
    ' : ''; + var searchbox = this.options.liveSearch ? + '' + : ''; + var actionsbox = this.multiple && this.options.actionsBox ? + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ' + : ''; + var donebutton = this.multiple && this.options.doneButton ? + '
    ' + + '
    ' + + '' + + '
    ' + + '
    ' + : ''; + var drop = + '
    ' + + '' + + '' + + '
    '; + + return $(drop); + }, + + createView: function () { + var $drop = this.createDropdown(), + li = this.createLi(); + + $drop.find('ul')[0].innerHTML = li; + return $drop; + }, + + reloadLi: function () { + //Remove all children. + this.destroyLi(); + //Re build + var li = this.createLi(); + this.$menuInner[0].innerHTML = li; + }, + + destroyLi: function () { + this.$menu.find('li').remove(); + }, + + createLi: function () { + var that = this, + _li = [], + optID = 0, + titleOption = document.createElement('option'), + liIndex = -1; // increment liIndex whenever a new
  • element is created to ensure liObj is correct + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @param [optgroup] + * @returns {string} + */ + var generateLI = function (content, index, classes, optgroup) { + return '' + content + '
  • '; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @param [tokens] + * @returns {string} + */ + var generateA = function (text, classes, inline, tokens) { + return '' + text + + '' + + ''; + }; + + if (this.options.title && !this.multiple) { + // this option doesn't create a new
  • element, but does add a new option, so liIndex is decreased + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended + liIndex--; + + if (!this.$element.find('.bs-title-option').length) { + // Use native JS to prepend option (faster) + var element = this.$element[0]; + titleOption.className = 'bs-title-option'; + titleOption.appendChild(document.createTextNode(this.options.title)); + titleOption.value = ''; + element.insertBefore(titleOption, element.firstChild); + // Check if selected attribute is already set on an option. If not, select the titleOption option. + if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true; + } + } + + this.$element.find('option').each(function (index) { + var $this = $(this); + + liIndex++; + + if ($this.hasClass('bs-title-option')) return; + + // Get the class and text for the option + var optionClass = this.className || '', + inline = this.style.cssText, + text = $this.data('content') ? $this.data('content') : $this.html(), + tokens = $this.data('tokens') ? $this.data('tokens') : null, + subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '' : '', + icon = typeof $this.data('icon') !== 'undefined' ? ' ' : '', + isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled; + + if (icon !== '' && isDisabled) { + icon = '' + icon + ''; + } + + if (that.options.hideDisabled && isDisabled) { + liIndex--; + return; + } + + if (!$this.data('content')) { + // Prepend any icon and append any subtext to the main text. + text = icon + '' + text + subtext + ''; + } + + if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) { + if ($this.index() === 0) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = this.parentElement.label, + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '' + $this.parent().data('subtext') + '' : '', + labelIcon = $this.parent().data('icon') ? ' ' : '', + optGroupClass = ' ' + this.parentElement.className || ''; + + label = labelIcon + '' + label + labelSubtext + ''; + + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + liIndex++; + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID)); + } + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID)); + } else if ($this.data('divider') === true) { + _li.push(generateLI('', index, 'divider')); + } else if ($this.data('hidden') === true) { + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden')); + } else { + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') { + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index)); + } + + that.liObj[index] = liIndex; + }); + + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); + } + + return _li.join(''); + }, + + findLis: function () { + if (this.$lis == null) this.$lis = this.$menu.find('li'); + return this.$lis; + }, + + /** + * @param [updateLi] defaults to true + */ + render: function (updateLi) { + var that = this, + notDisabled; + + //Update the LI to match the SELECT + if (updateLi !== false) { + this.$element.find('option').each(function (index) { + var $lis = that.findLis().eq(that.liObj[index]); + + that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis); + that.setSelected(index, this.selected, $lis); + }); + } + + this.tabIndex(); + + var selectedItems = this.$element.find('option').map(function () { + if (this.selected) { + if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false; + + var $this = $(this), + icon = $this.data('icon') && that.options.showIcon ? ' ' : '', + subtext; + + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) { + subtext = ' ' + $this.data('subtext') + ''; + } else { + subtext = ''; + } + if (typeof $this.attr('title') !== 'undefined') { + return $this.attr('title'); + } else if ($this.data('content') && that.options.showContent) { + return $this.data('content'); + } else { + return icon + $this.html() + subtext; + } + } + }).toArray(); + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); + + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { + var max = this.options.selectedTextFormat.split('>'); + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + if (this.options.title == undefined) { + this.options.title = this.$element.attr('title'); + } + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + //strip all html-tags and trim the result + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, ''))); + this.$button.children('.filter-option').html(title); + + this.$element.trigger('rendered.bs.select'); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; + + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('ul'), + divider = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; + + text.className = 'text'; + newElement.className = this.$menu[0].parentNode.className + ' open'; + menu.className = 'dropdown-menu open'; + menuInner.className = 'dropdown-menu inner'; + divider.className = 'divider'; + + text.appendChild(document.createTextNode('Inner text')); + a.appendChild(text); + li.appendChild(a); + menuInner.appendChild(li); + menuInner.appendChild(divider); + if (header) menu.appendChild(header); + if (search) { + // create a span instead of input as creating an input element is slower + var input = document.createElement('span'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); + + document.body.appendChild(newElement); + + var liHeight = a.offsetHeight, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = getComputedStyle ? getComputedStyle(menu) : false, + $menu = menuStyle ? $(menu) : null, + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + menuExtras = menuPadding + + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2; + + document.body.removeChild(newElement); + + this.sizeInfo = { + liHeight: liHeight, + headerHeight: headerHeight, + searchHeight: searchHeight, + actionsHeight: actionsHeight, + doneButtonHeight: doneButtonHeight, + dividerHeight: dividerHeight, + menuPadding: menuPadding, + menuExtras: menuExtras + }; + }, + + setSize: function () { + this.findLis(); + this.liHeight(); + var that = this, + $menu = this.$menu, + $menuInner = this.$menuInner, + $window = $(window), + selectHeight = this.$newElement[0].offsetHeight, + liHeight = this.sizeInfo['liHeight'], + headerHeight = this.sizeInfo['headerHeight'], + searchHeight = this.sizeInfo['searchHeight'], + actionsHeight = this.sizeInfo['actionsHeight'], + doneButtonHeight = this.sizeInfo['doneButtonHeight'], + divHeight = this.sizeInfo['dividerHeight'], + menuPadding = this.sizeInfo['menuPadding'], + menuExtras = this.sizeInfo['menuExtras'], + notDisabled = this.options.hideDisabled ? '.disabled' : '', + menuHeight, + getHeight, + selectOffsetTop, + selectOffsetBot, + posVert = function () { + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; + }; + + posVert(); + + if (this.options.header) $menu.css('padding-top', 0); + + if (this.options.size === 'auto') { + var getSize = function () { + var minHeight, + hasClass = function (className, include) { + return function (element) { + if (include) { + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } else { + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } + }; + }, + lis = that.$menuInner[0].getElementsByTagName('li'), + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'), + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header'); + + posVert(); + menuHeight = selectOffsetBot - menuExtras; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + } else { + getHeight = $menu.height(); + } + + if (that.options.dropupAuto) { + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); + } + if (that.$newElement.hasClass('dropup')) { + menuHeight = selectOffsetTop - menuExtras; + } + + if ((lisVisible.length + optGroup.length) > 3) { + minHeight = liHeight * 3 + menuExtras - 2; + } else { + minHeight = 0; + } + + $menu.css({ + 'max-height': menuHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px' + }); + $menuInner.css({ + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' + }); + }; + getSize(); + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize); + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) { + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(), + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + } else { + getHeight = $menu.height(); + } + + if (that.options.dropupAuto) { + //noinspection JSUnusedAssignment + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); + } + $menu.css({ + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px', + 'overflow': 'hidden', + 'min-height': '' + }); + $menuInner.css({ + 'max-height': menuHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': '' + }); + } + }, + + setWidth: function () { + if (this.options.width === 'auto') { + this.$menu.css('min-width', '0'); + + // Get correct width if element is hidden + var $selectClone = this.$menu.parent().clone().appendTo('body'), + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone, + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(), + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth(); + + $selectClone.remove(); + $selectClone2.remove(); + + // Set width to whatever's larger, button title or longest option + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px'); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + var that = this, + drop = '
    ', + $drop = $(drop), + pos, + actualHeight, + getPlacement = function ($element) { + $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); + pos = $element.offset(); + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; + $drop.css({ + 'top': pos.top + actualHeight, + 'left': pos.left, + 'width': $element[0].offsetWidth, + 'position': 'absolute' + }); + }; + + this.$newElement.on('click', function () { + if (that.isDisabled()) { + return; + } + getPlacement($(this)); + $drop.appendTo(that.options.container); + $drop.toggleClass('open', !$(this).hasClass('open')); + $drop.append(that.$menu); + }); + + $(window).on('resize scroll', function () { + getPlacement(that.$newElement); + }); + + this.$element.on('hide.bs.select', function () { + that.$menu.data('height', that.$menu.height()); + $drop.detach(); + }); + }, + + setSelected: function (index, selected, $lis) { + if (!$lis) { + var $lis = this.findLis().eq(this.liObj[index]); + } + + $lis.toggleClass('selected', selected); + }, + + setDisabled: function (index, disabled, $lis) { + if (!$lis) { + var $lis = this.findLis().eq(this.liObj[index]); + } + + if (disabled) { + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1); + } else { + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0); + } + }, + + isDisabled: function () { + return this.$element[0].disabled; + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$newElement.addClass('disabled'); + this.$button.addClass('disabled').attr('tabindex', -1); + } else { + if (this.$button.hasClass('disabled')) { + this.$newElement.removeClass('disabled'); + this.$button.removeClass('disabled'); + } + + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + tabIndex: function () { + if (this.$element.is('[tabindex]')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + }, + + clickListener: function () { + var that = this, + $document = $(document); + + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { + e.stopPropagation(); + }); + + $document.data('spaceSelect', false); + + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + + this.$newElement.on('click', function () { + that.setSize(); + that.$element.on('shown.bs.select', function () { + if (!that.options.liveSearch && !that.multiple) { + that.$menu.find('.selected a').focus(); + } else if (!that.multiple) { + var selectedIndex = that.liObj[that.$element[0].selectedIndex]; + + if (typeof selectedIndex !== 'number') return; + + // scroll to selected option + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop; + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2; + that.$menuInner[0].scrollTop = offset; + } + }); + }); + + this.$menu.on('click', 'li a', function (e) { + var $this = $(this), + clickedIndex = $this.parent().data('originalIndex'), + prevValue = that.$element.val(), + prevIndex = that.$element.prop('selectedIndex'); + + // Don't close on multi choice menu + if (that.multiple) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + that.setSelected(clickedIndex, !state); + $this.blur(); + + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + var optgroupID = $this.parent().data('optgroup'); + that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
    '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
    ' + maxTxt + '
    ')); + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
    ' + maxTxtGrp + '
    ')); + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + that.$element.change(); + // $option.prop('selected') is current option state (selected/unselected). state is previous option state. + that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]); + } + } + }); + + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + } + }); + + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + }); + + this.$menu.on('click', '.popover-title .close', function () { + that.$button.click(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + that.$element.change(); + }); + + this.$element.change(function () { + that.render(false); + }); + }, + + liveSearchListener: function () { + var that = this, + $no_results = $('
  • '); + + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { + that.$menuInner.find('.active').removeClass('active'); + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + that.$lis.not('.is-hidden').removeClass('hidden'); + if (!!$no_results.parent().length) $no_results.remove(); + } + if (!that.multiple) that.$menuInner.find('.selected').addClass('active'); + setTimeout(function () { + that.$searchbox.focus(); + }, 10); + }); + + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + if (that.$searchbox.val()) { + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a'); + if (that.options.liveSearchNormalize) { + $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')'); + } else { + $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')'); + } + $searchBase.parent().addClass('hidden'); + + that.$lis.filter('.dropdown-header').each(function () { + var $this = $(this), + optgroup = $this.data('optgroup'); + + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) { + $this.addClass('hidden'); + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden'); + } + }); + + var $lisVisible = that.$lis.not('.hidden'); + + // hide divider if first or last visible, or if followed by another divider + $lisVisible.each(function (index) { + var $this = $(this); + + if ($this.hasClass('divider') && ( + $this.index() === $lisVisible.eq(0).index() || + $this.index() === $lisVisible.last().index() || + $lisVisible.eq(index + 1).hasClass('divider'))) { + $this.addClass('hidden'); + } + }); + + if (!that.$lis.not('.hidden, .no-results').length) { + if (!!$no_results.parent().length) { + $no_results.remove(); + } + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show(); + that.$menuInner.append($no_results); + } else if (!!$no_results.parent().length) { + $no_results.remove(); + } + + } else { + that.$lis.not('.is-hidden').removeClass('hidden'); + if (!!$no_results.parent().length) { + $no_results.remove(); + } + } + + that.$lis.filter('.active').removeClass('active'); + that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus(); + $(this).focus(); + }); + }, + + _searchStyle: function () { + var style = 'icontains'; + switch (this.options.liveSearchStyle) { + case 'begins': + case 'startsWith': + style = 'ibegins'; + break; + case 'contains': + default: + break; //no need to change the default + } + + return style; + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element.val(value); + this.render(); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + selectAll: function () { + this.findLis(); + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true); + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected'); + this.render(false); + }, + + deselectAll: function () { + this.findLis(); + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false); + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected'); + this.render(false); + }, + + keydown: function (e) { + var $this = $(this), + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(), + $items, + that = $parent.data('this'), + index, + next, + first, + last, + prev, + nextPrev, + prevIndex, + isActive, + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)', + keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + if (that.options.liveSearch) $parent = $this.parent().parent(); + + if (that.options.container) $parent = that.$menu; + + $items = $('[role=menu] li a', $parent); + + isActive = that.$menu.parent().hasClass('open'); + + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) { + if (!that.options.container) { + that.setSize(); + that.$menu.parent().addClass('open'); + isActive = true; + } else { + that.$newElement.trigger('click'); + } + that.$searchbox.focus(); + } + + if (that.options.liveSearch) { + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { + e.preventDefault(); + that.$menu.parent().removeClass('open'); + if (that.options.container) that.$newElement.removeClass('open'); + that.$button.focus(); + } + // $items contains li elements when liveSearch is enabled + $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent); + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { + if ($items.filter('.active').length === 0) { + $items = that.$newElement.find('li'); + if (that.options.liveSearchNormalize) { + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); + } else { + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')'); + } + } + } + } + + if (!$items.length) return; + + if (/(38|40)/.test(e.keyCode.toString(10))) { + index = $items.index($items.filter(':focus')); + first = $items.parent(selector).first().data('originalIndex'); + last = $items.parent(selector).last().data('originalIndex'); + next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex'); + prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex'); + nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex'); + + if (that.options.liveSearch) { + $items.each(function (i) { + if (!$(this).hasClass('disabled')) { + $(this).data('index', i); + } + }); + index = $items.index($items.filter('.active')); + first = $items.first().data('index'); + last = $items.last().data('index'); + next = $items.eq(index).nextAll().eq(0).data('index'); + prev = $items.eq(index).prevAll().eq(0).data('index'); + nextPrev = $items.eq(next).prevAll().eq(0).data('index'); + } + + prevIndex = $this.data('prevIndex'); + + if (e.keyCode == 38) { + if (that.options.liveSearch) index -= 1; + if (index != nextPrev && index > prev) index = prev; + if (index < first) index = first; + if (index == prevIndex) index = last; + } else if (e.keyCode == 40) { + if (that.options.liveSearch) index += 1; + if (index == -1) index = 0; + if (index != nextPrev && index < next) index = next; + if (index > last) index = last; + if (index == prevIndex) index = first; + } + + $this.data('prevIndex', index); + + if (!that.options.liveSearch) { + $items.eq(index).focus(); + } else { + e.preventDefault(); + if (!$this.hasClass('dropdown-toggle')) { + $items.removeClass('active').eq(index).addClass('active').children('a').focus(); + $this.focus(); + } + } + + } else if (!$this.is('input')) { + var keyIndex = [], + count, + prevKey; + + $items.each(function () { + if (!$(this).parent().hasClass('disabled')) { + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { + keyIndex.push($(this).parent().index()); + } + } + }); + + count = $(document).data('keycount'); + count++; + $(document).data('keycount', count); + + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); + + if (prevKey != keyCodeMap[e.keyCode]) { + count = 1; + $(document).data('keycount', count); + } else if (count >= keyIndex.length) { + $(document).data('keycount', 0); + if (count > keyIndex.length) count = 1; + } + + $items.eq(keyIndex[count - 1]).focus(); + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); + if (!that.options.liveSearch) { + var elem = $(':focus'); + elem.click(); + // Bring back focus for multiselects + elem.focus(); + // Prevent screen from scrolling if the user hit the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } else if (!/(32)/.test(e.keyCode.toString(10))) { + that.$menu.find('.active a').click(); + $this.focus(); + } + $(document).data('keycount', 0); + } + + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { + that.$menu.parent().removeClass('open'); + if (that.options.container) that.$newElement.removeClass('open'); + that.$button.focus(); + } + }, + + mobile: function () { + this.$element.addClass('mobile-device').appendTo(this.$newElement); + if (this.options.container) this.$menu.hide(); + }, + + refresh: function () { + this.$lis = null; + this.reloadLi(); + this.render(); + this.checkDisabled(); + this.liHeight(true); + this.setStyle(); + this.setWidth(); + if (this.$lis) this.$searchbox.trigger('propertychange'); + + this.$element.trigger('refreshed.bs.select'); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option, event) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option, + _event = event; + [].shift.apply(args); + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + $this.data('selectpicker', (data = new Selectpicker(this, config, _event))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .data('keycount', 0) + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); diff --git a/PHP-SourceCode/admin/js/bootstrap-select.min.js b/PHP-SourceCode/admin/js/bootstrap-select.min.js new file mode 100644 index 0000000..18fdc81 --- /dev/null +++ b/PHP-SourceCode/admin/js/bootstrap-select.min.js @@ -0,0 +1,8 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element.removeClass("bs-select-hidden"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple||this.options.showTick?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'
    '+this.options.header+"
    ":"",g=this.options.liveSearch?'":"",h=this.multiple&&this.options.actionsBox?'
    ":"",i=this.multiple&&this.options.doneButton?'
    ":"",j='
    ";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return""+a+""},j=function(a,e,f,g){return'"+a+''};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?''+c.data("subtext")+"":"",o="undefined"!=typeof c.data("icon")?' ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o=""+o+""),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+''+l+n+""),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?''+c.parent().data("subtext")+"":"",u=c.parent().data("icon")?' ':"";s=u+''+s+t+"",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?' ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' '+c.data("subtext")+"":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('
    ');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize()}),this.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l
    ');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("
    "+r+"
    ")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("
    "+s+"
    ")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]).triggerNative("change")}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('
  • ');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1),this.$element.trigger("changed.bs.select").triggerNative("change")},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger("click")},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)}); +//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/PHP-SourceCode/admin/js/bootstrap.js b/PHP-SourceCode/admin/js/bootstrap.js new file mode 100644 index 0000000..d1a3c78 --- /dev/null +++ b/PHP-SourceCode/admin/js/bootstrap.js @@ -0,0 +1,2363 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.6 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.6 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.6' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.6 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.6' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.6 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.6' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.6 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.6' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.6' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.6 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.6' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.6 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.6' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.6 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.6' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.6 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.6' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.6 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.6' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.6 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.6' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/PHP-SourceCode/admin/js/bootstrap.min.js b/PHP-SourceCode/admin/js/bootstrap.min.js new file mode 100644 index 0000000..8417cbb --- /dev/null +++ b/PHP-SourceCode/admin/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/PHP-SourceCode/admin/js/chartData.js b/PHP-SourceCode/admin/js/chartData.js new file mode 100644 index 0000000..616b012 --- /dev/null +++ b/PHP-SourceCode/admin/js/chartData.js @@ -0,0 +1,129 @@ +var swirlData = { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [ + { + label: "My First dataset", + fillColor: "rgba(220,220,220,0.2)", + strokeColor: "rgba(220,220,220,1)", + pointColor: "rgba(220,220,220,1)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(220,220,220,1)", + data: [65, 59, 80, 81, 56, 55, 40] + }, + { + label: "My Second dataset", + fillColor: "rgba(151,187,205,0.2)", + strokeColor: "rgba(151,187,205,1)", + pointColor: "rgba(151,187,205,1)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 86, 27, 90] + } + ] +}; + +var doughnutData = [ + { + value: 300, + color:"#F7464A", + highlight: "#FF5A5E", + label: "Red" + }, + { + value: 50, + color: "#46BFBD", + highlight: "#5AD3D1", + label: "Green" + }, + { + value: 100, + color: "#FDB45C", + highlight: "#FFC870", + label: "Yellow" + } +] + +var radarData = { + labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], + datasets: [ + { + label: "My First dataset", + fillColor: "rgba(220,220,220,0.2)", + strokeColor: "rgba(220,220,220,1)", + pointColor: "rgba(220,220,220,1)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(220,220,220,1)", + data: [65, 59, 90, 81, 56, 55, 40] + }, + { + label: "My Second dataset", + fillColor: "rgba(151,187,205,0.2)", + strokeColor: "rgba(151,187,205,1)", + pointColor: "rgba(151,187,205,1)", + pointStrokeColor: "#fff", + pointHighlightFill: "#fff", + pointHighlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 96, 27, 100] + } + ] +}; + + +var polarData = [ + { + value: 300, + color:"#F7464A", + highlight: "#FF5A5E", + label: "Red" + }, + { + value: 50, + color: "#46BFBD", + highlight: "#5AD3D1", + label: "Green" + }, + { + value: 100, + color: "#FDB45C", + highlight: "#FFC870", + label: "Yellow" + }, + { + value: 40, + color: "#949FB1", + highlight: "#A8B3C5", + label: "Grey" + }, + { + value: 120, + color: "#4D5360", + highlight: "#616774", + label: "Dark Grey" + } + +]; + +var barChartData = { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [ + { + label: "My First dataset", + fillColor: "rgba(220,220,220,0.5)", + strokeColor: "rgba(220,220,220,0.8)", + highlightFill: "rgba(220,220,220,0.75)", + highlightStroke: "rgba(220,220,220,1)", + data: [65, 59, 80, 81, 56, 55, 40] + }, + { + label: "My Second dataset", + fillColor: "rgba(151,187,205,0.5)", + strokeColor: "rgba(151,187,205,0.8)", + highlightFill: "rgba(151,187,205,0.75)", + highlightStroke: "rgba(151,187,205,1)", + data: [28, 48, 40, 19, 86, 27, 90] + } + ] +} diff --git a/PHP-SourceCode/admin/js/dataTables.bootstrap.min.js b/PHP-SourceCode/admin/js/dataTables.bootstrap.min.js new file mode 100644 index 0000000..bd23911 --- /dev/null +++ b/PHP-SourceCode/admin/js/dataTables.bootstrap.min.js @@ -0,0 +1,8 @@ +/*! + DataTables Bootstrap 3 integration + ©2011-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes, +{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,m,j,n){var o=new f.Api(a),s=a.oClasses,k=a.oLanguage.oPaginate,t=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")}; +l=0;for(h=f.length;l",{"class":s.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("",{href:"#", +"aria-controls":a.sTableId,"aria-label":t[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(u){}q(b(h).empty().html('
      ').children("ul"),m);i&&b(h).find("[data-dt-idx="+i+"]").focus()};return f}); diff --git a/PHP-SourceCode/admin/js/fileinput.js b/PHP-SourceCode/admin/js/fileinput.js new file mode 100644 index 0000000..24e9142 --- /dev/null +++ b/PHP-SourceCode/admin/js/fileinput.js @@ -0,0 +1,2304 @@ +/*! + * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015 + * @version 4.2.6 + * + * File input styled for Bootstrap 3.0 that utilizes HTML5 File Input's advanced + * features including the FileReader API. + * + * The plugin drastically enhances the HTML file input to preview multiple files on the client before + * upload. In addition it provides the ability to preview content of images, text, videos, audio, html, + * flash and other objects. It also offers the ability to upload and delete files using AJAX, and add + * files in batches (i.e. preview, append, or remove before upload). + * + * Author: Kartik Visweswaran + * Copyright: 2015, Kartik Visweswaran, Krajee.com + * For more JQuery plugins visit http://plugins.krajee.com + * For more Yii related demos visit http://demos.krajee.com + */ +(function ($) { + "use strict"; + + $.fn.fileinputLocales = {}; + + String.prototype.repl = function (from, to) { + return this.split(from).join(to); + }; + var isIE = function (ver) { + var div = document.createElement("div"), status; + div.innerHTML = ""; + status = (div.getElementsByTagName("i").length === 1); + document.body.appendChild(div); + div.parentNode.removeChild(div); + return status; + }, + handler = function ($el, event, callback, skipNS) { + var ev = skipNS ? event : event + '.fileinput'; + $el.off(ev).on(ev, callback); + }, + previewCache = { + data: {}, + init: function (obj) { + var content = obj.initialPreview, id = obj.id; + if (content.length > 0 && !isArray(content)) { + content = content.split(obj.initialPreviewDelimiter); + } + previewCache.data[id] = { + content: content, + config: obj.initialPreviewConfig, + tags: obj.initialPreviewThumbTags, + delimiter: obj.initialPreviewDelimiter, + template: obj.previewGenericTemplate, + msg: function (n) { + return obj.getMsgSelected(n); + }, + initId: obj.previewInitId, + footer: obj.getLayoutTemplate('footer'), + isDelete: obj.initialPreviewShowDelete, + caption: obj.initialCaption, + actions: function (showUpload, showDelete, disabled, url, key) { + return obj.renderFileActions(showUpload, showDelete, disabled, url, key); + } + }; + }, + fetch: function (id) { + return previewCache.data[id].content.filter(function (n) { + return n !== null; + }); + }, + count: function (id, all) { + return !!previewCache.data[id] && !!previewCache.data[id].content ? + (all ? previewCache.data[id].content.length : previewCache.fetch(id).length) : 0; + }, + get: function (id, i, isDisabled) { + var ind = 'init_' + i, data = previewCache.data[id], config = data.config[i], + previewId = data.initId + '-' + ind, out, $tmp, frameAttr = {}, + frameClass = ' file-preview-initial'; + isDisabled = isDisabled === undefined ? true : isDisabled; + if (data.content[i] === null) { + return ''; + } + if (!isEmpty(config) && !isEmpty(config.frameClass)) { + frameClass += ' ' + config.frameClass; + } + out = data.template + .repl('{previewId}', previewId) + .repl('{frameClass}', frameClass) + .repl('{fileindex}', ind) + .repl('{content}', data.content[i]) + .repl('{footer}', previewCache.footer(id, i, isDisabled)); + if (data.tags.length && data.tags[i]) { + out = replaceTags(out, data.tags[i]); + } + if (!isEmpty(config) && !isEmpty(config.frameAttr)) { + $tmp = $(document.createElement('div')).html(out); + $tmp.find('.file-preview-initial').attr(config.frameAttr); + out = $tmp.html(); + $tmp.remove(); + } + return out; + }, + add: function (id, content, config, tags, append) { + var data = $.extend(true, {}, previewCache.data[id]), index; + if (!isArray(content)) { + content = content.split(data.delimiter); + } + if (append) { + index = data.content.push(content) - 1; + data.config[index] = config; + data.tags[index] = tags; + } else { + index = content.length; + data.content = content; + data.config = config; + data.tags = tags; + } + previewCache.data[id] = data; + return index; + }, + set: function (id, content, config, tags, append) { + var data = $.extend(true, {}, previewCache.data[id]), i; + if (!isArray(content)) { + content = content.split(data.delimiter); + } + if (append) { + for (i = 0; i < content.length; i++) { + data.content.push(content[i]); + } + for (i = 0; i < config.length; i++) { + data.config.push(config[i]); + } + for (i = 0; i < tags.length; i++) { + data.tags.push(tags[i]); + } + } else { + data.content = content; + data.config = config; + data.tags = tags; + } + previewCache.data[id] = data; + }, + unset: function (id, index) { + var cGS = previewCache.count(id); + if (!cGS) { + return; + } + if (cGS === 1) { + previewCache.data[id].content = []; + previewCache.data[id].config = []; + return; + } + previewCache.data[id].content[index] = null; + previewCache.data[id].config[index] = null; + }, + out: function (id) { + var html = '', data = previewCache.data[id], caption, len = previewCache.count(id, true); + if (len === 0) { + return {content: '', caption: ''}; + } + for (var i = 0; i < len; i++) { + html += previewCache.get(id, i); + } + caption = data.msg(previewCache.count(id)); + return {content: html, caption: caption}; + }, + footer: function (id, i, isDisabled) { + var data = previewCache.data[id]; + isDisabled = isDisabled === undefined ? true : isDisabled; + if (data.config.length === 0 || isEmpty(data.config[i])) { + return ''; + } + var config = data.config[i], + caption = isSet('caption', config) ? config.caption : '', + width = isSet('width', config) ? config.width : 'auto', + url = isSet('url', config) ? config.url : false, + key = isSet('key', config) ? config.key : null, + disabled = (url === false) && isDisabled, + actions = data.isDelete ? data.actions(false, true, disabled, url, key) : '', + footer = data.footer.repl('{actions}', actions); + return footer + .repl('{caption}', caption) + .repl('{width}', width) + .repl('{indicator}', '') + .repl('{indicatorTitle}', ''); + } + }, + getNum = function (num, def) { + def = def || 0; + if (typeof num === "number") { + return num; + } + if (typeof num === "string") { + num = parseFloat(num); + } + return isNaN(num) ? def : num; + }, + hasFileAPISupport = function () { + return window.File && window.FileReader; + }, + hasDragDropSupport = function () { + var $div = document.createElement('div'); + return !isIE(9) && ($div.draggable !== undefined || ($div.ondragstart !== undefined && $div.ondrop !== undefined)); + }, + hasFileUploadSupport = function () { + return hasFileAPISupport() && window.FormData; + }, + addCss = function ($el, css) { + $el.removeClass(css).addClass(css); + }, + STYLE_SETTING = 'style="width:{width};height:{height};"', + OBJECT_PARAMS = ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n', + DEFAULT_PREVIEW = '
      \n' + + ' {previewFileIcon}\n' + + '
      ', + defaultFileActionSettings = { + removeIcon: '', + removeClass: 'btn btn-xs btn-default', + removeTitle: 'Remove file', + uploadIcon: '', + uploadClass: 'btn btn-xs btn-default', + uploadTitle: 'Upload file', + indicatorNew: '', + indicatorSuccess: '', + indicatorError: '', + indicatorLoading: '', + indicatorNewTitle: 'Not uploaded yet', + indicatorSuccessTitle: 'Uploaded', + indicatorErrorTitle: 'Upload Error', + indicatorLoadingTitle: 'Uploading ...' + }, + tMain1 = '{preview}\n' + + '
      \n' + + '
      \n' + + ' {caption}\n' + + '
      \n' + + ' {remove}\n' + + ' {cancel}\n' + + ' {upload}\n' + + ' {browse}\n' + + '
      \n' + + '
      ', + tMain2 = '{preview}\n
      \n{remove}\n{cancel}\n{upload}\n{browse}\n', + tPreview = '
      \n' + + '
      ×
      \n' + + '
      \n' + + '
      \n' + + '
      \n' + + '
      ' + + '
      \n' + + '
      \n' + + '
      \n' + + '
      ', + tIcon = '', + tCaption = '
      \n' + + ' \n' + + '
      \n' + + '
      ', + tModal = '', + tProgress = '
      \n' + + '
      \n' + + ' {percent}%\n' + + '
      \n' + + '
      ', + tFooter = '', + tActions = '
      \n' + + ' \n' + + '
      {indicator}
      \n' + + '
      \n' + + '
      ', + tActionDelete = '\n', + tActionUpload = '\n', + tGeneric = '
      \n' + + ' {content}\n' + + ' {footer}\n' + + '
      \n', + tHtml = '
      \n' + + ' \n' + + ' ' + DEFAULT_PREVIEW + '\n' + + ' \n' + + ' {footer}\n' + + '
      ', + tImage = '
      \n' + + ' {caption}\n' + + ' {footer}\n' + + '
      \n', + tText = '
      \n' + + '
      \n' + + ' {data}\n' + + '
      \n' + + ' {footer}\n' + + '
      ', + tVideo = '
      \n' + + ' \n' + + ' {footer}\n' + + '
      \n', + tAudio = '
      \n' + + ' \n' + + ' {footer}\n' + + '
      ', + tFlash = '
      \n' + + ' \n' + + OBJECT_PARAMS + ' ' + DEFAULT_PREVIEW + '\n' + + ' \n' + + ' {footer}\n' + + '
      \n', + tObject = '
      \n' + + ' \n' + + ' \n' + + OBJECT_PARAMS + ' ' + DEFAULT_PREVIEW + '\n' + + ' \n' + + ' {footer}\n' + + '
      ', + tOther = '
      \n' + + ' ' + DEFAULT_PREVIEW + '\n' + + ' {footer}\n' + + '
      ', + defaultLayoutTemplates = { + main1: tMain1, + main2: tMain2, + preview: tPreview, + icon: tIcon, + caption: tCaption, + modal: tModal, + progress: tProgress, + footer: tFooter, + actions: tActions, + actionDelete: tActionDelete, + actionUpload: tActionUpload + }, + defaultPreviewTemplates = { + generic: tGeneric, + html: tHtml, + image: tImage, + text: tText, + video: tVideo, + audio: tAudio, + flash: tFlash, + object: tObject, + other: tOther + }, + defaultPreviewTypes = ['image', 'html', 'text', 'video', 'audio', 'flash', 'object'], + defaultPreviewSettings = { + image: {width: "auto", height: "160px"}, + html: {width: "213px", height: "160px"}, + text: {width: "160px", height: "160px"}, + video: {width: "213px", height: "160px"}, + audio: {width: "213px", height: "80px"}, + flash: {width: "213px", height: "160px"}, + object: {width: "160px", height: "160px"}, + other: {width: "160px", height: "160px"} + }, + defaultFileTypeSettings = { + image: function (vType, vName) { + return (vType !== undefined) ? vType.match('image.*') : vName.match(/\.(gif|png|jpe?g)$/i); + }, + html: function (vType, vName) { + return (vType !== undefined) ? vType === 'text/html' : vName.match(/\.(htm|html)$/i); + }, + text: function (vType, vName) { + return (vType !== undefined && vType.match('text.*')) || vName.match(/\.(txt|md|csv|nfo|php|ini)$/i); + }, + video: function (vType, vName) { + return (vType !== undefined && vType.match(/\.video\/(ogg|mp4|webm)$/i)) || vName.match(/\.(og?|mp4|webm)$/i); + }, + audio: function (vType, vName) { + return (vType !== undefined && vType.match(/\.audio\/(ogg|mp3|wav)$/i)) || vName.match(/\.(ogg|mp3|wav)$/i); + }, + flash: function (vType, vName) { + return (vType !== undefined && vType === 'application/x-shockwave-flash') || vName.match(/\.(swf)$/i); + }, + object: function () { + return true; + }, + other: function () { + return true; + } + }, + isEmpty = function (value, trim) { + return value === null || value === undefined || value.length === 0 || (trim && $.trim(value) === ''); + }, + isArray = function (a) { + return Array.isArray(a) || Object.prototype.toString.call(a) === '[object Array]'; + }, + isSet = function (needle, haystack) { + return (typeof haystack === 'object' && needle in haystack); + }, + getElement = function (options, param, value) { + return (isEmpty(options) || isEmpty(options[param])) ? value : $(options[param]); + }, + uniqId = function () { + return Math.round(new Date().getTime() + (Math.random() * 100)); + }, + htmlEncode = function (str) { + return String(str).repl('&', '&') + .repl('"', '"') + .repl("'", ''') + .repl('<', '<') + .repl('>', '>'); + }, + replaceTags = function (str, tags) { + var out = str; + tags = tags || {}; + $.each(tags, function (key, value) { + if (typeof value === "function") { + value = value(); + } + out = out.repl(key, value); + }); + return out; + }, + objUrl = window.URL || window.webkitURL, + FileInput = function (element, options) { + var self = this; + self.$element = $(element); + if (!self.validate()) { + return; + } + self.isPreviewable = hasFileAPISupport(); + self.isIE9 = isIE(9); + self.isIE10 = isIE(10); + if (self.isPreviewable || self.isIE9) { + self.init(options); + self.listen(); + } else { + self.$element.removeClass('file-loading'); + } + }; + + FileInput.prototype = { + constructor: FileInput, + validate: function () { + var self = this, $exception; + if (self.$element.attr('type') === 'file') { + return true; + } + $exception = '
      ' + + '

      Invalid Input Type

      ' + + 'You must set an input type = file for bootstrap-fileinput plugin to initialize.' + + '
      '; + self.$element.after($exception); + return false; + }, + init: function (options) { + var self = this, $el = self.$element, t; + $.each(options, function (key, value) { + self[key] = (key === 'maxFileCount' || key === 'maxFileSize') ? getNum(value) : value; + }); + self.fileInputCleared = false; + self.fileBatchCompleted = true; + if (isEmpty(self.allowedPreviewTypes)) { + self.allowedPreviewTypes = defaultPreviewTypes; + } + if (!self.isPreviewable) { + self.showPreview = false; + } + self.uploadFileAttr = !isEmpty($el.attr('name')) ? $el.attr('name') : 'file_data'; + self.reader = null; + self.formdata = {}; + self.filestack = []; + self.ajaxRequests = []; + self.isError = false; + self.ajaxAborted = false; + self.dropZoneEnabled = hasDragDropSupport() && self.dropZoneEnabled; + self.isDisabled = self.$element.attr('disabled') || self.$element.attr('readonly'); + self.isUploadable = hasFileUploadSupport() && !isEmpty(self.uploadUrl); + self.slug = typeof options.slugCallback === "function" ? options.slugCallback : self.slugDefault; + self.mainTemplate = self.showCaption ? self.getLayoutTemplate('main1') : self.getLayoutTemplate('main2'); + self.captionTemplate = self.getLayoutTemplate('caption'); + self.previewGenericTemplate = self.getPreviewTemplate('generic'); + if (isEmpty(self.$element.attr('id'))) { + self.$element.attr('id', uniqId()); + } + if (self.$container === undefined) { + self.$container = self.createContainer(); + } else { + self.refreshContainer(); + } + self.$progress = self.$container.find('.kv-upload-progress'); + self.$btnUpload = self.$container.find('.kv-fileinput-upload'); + self.$captionContainer = getElement(options, 'elCaptionContainer', self.$container.find('.file-caption')); + self.$caption = getElement(options, 'elCaptionText', self.$container.find('.file-caption-name')); + self.$previewContainer = getElement(options, 'elPreviewContainer', self.$container.find('.file-preview')); + self.$preview = getElement(options, 'elPreviewImage', self.$container.find('.file-preview-thumbnails')); + self.$previewStatus = getElement(options, 'elPreviewStatus', self.$container.find('.file-preview-status')); + self.$errorContainer = getElement(options, 'elErrorContainer', + self.$previewContainer.find('.kv-fileinput-error')); + if (!isEmpty(self.msgErrorClass)) { + addCss(self.$errorContainer, self.msgErrorClass); + } + self.$errorContainer.hide(); + self.fileActionSettings = $.extend(defaultFileActionSettings, options.fileActionSettings); + self.previewInitId = "preview-" + uniqId(); + self.id = self.$element.attr('id'); + previewCache.init(self); + self.initPreview(true); + self.initPreviewDeletes(); + self.options = options; + self.setFileDropZoneTitle(); + self.uploadCount = 0; + self.uploadPercent = 0; + self.$element.removeClass('file-loading'); + t = self.getLayoutTemplate('progress'); + self.progressTemplate = t.replace('{class}', self.progressClass); + self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass); + self.setEllipsis(); + }, + parseError: function (jqXHR, errorThrown, fileName) { + var self = this, errMsg = $.trim(errorThrown + ''), + dot = errMsg.slice(-1) === '.' ? '' : '.', + text = jqXHR.responseJSON !== undefined && jqXHR.responseJSON.error !== undefined ? + jqXHR.responseJSON.error : jqXHR.responseText; + if (self.showAjaxErrorDetails) { + text = $.trim(text.replace(/\n\s*\n/g, '\n')); + text = text.length > 0 ? '
      ' + text + '
      ' : ''; + errMsg += dot + text; + } else { + errMsg += dot; + } + return fileName ? '' + fileName + ': ' + jqXHR : errMsg; + }, + raise: function (event, params) { + var self = this, e = $.Event(event); + if (params !== undefined) { + self.$element.trigger(e, params); + } else { + self.$element.trigger(e); + } + if (!e.result) { + return e.result; + } + switch (event) { + // ignore these events + case 'filebatchuploadcomplete': + case 'filebatchuploadsuccess': + case 'fileuploaded': + case 'fileclear': + case 'filecleared': + case 'filereset': + case 'fileerror': + case 'filefoldererror': + case 'fileuploaderror': + case 'filebatchuploaderror': + case 'filedeleteerror': + case 'filecustomerror': + case 'filesuccessremove': + break; + // receive data response via `filecustomerror` event` + default: + self.ajaxAborted = e.result; + break; + } + return true; + }, + getLayoutTemplate: function (t) { + var self = this, + template = isSet(t, self.layoutTemplates) ? self.layoutTemplates[t] : defaultLayoutTemplates[t]; + if (isEmpty(self.customLayoutTags)) { + return template; + } + return replaceTags(template, self.customLayoutTags); + }, + getPreviewTemplate: function (t) { + var self = this, + template = isSet(t, self.previewTemplates) ? self.previewTemplates[t] : defaultPreviewTemplates[t]; + template = template.repl('{previewFileIcon}', self.previewFileIcon); + if (isEmpty(self.customPreviewTags)) { + return template; + } + return replaceTags(template, self.customPreviewTags); + }, + getOutData: function (jqXHR, responseData, filesData) { + var self = this; + jqXHR = jqXHR || {}; + responseData = responseData || {}; + filesData = filesData || self.filestack.slice(0) || {}; + return { + form: self.formdata, + files: filesData, + extra: self.getExtraData(), + response: responseData, + reader: self.reader, + jqXHR: jqXHR + }; + }, + setEllipsis: function () { + var self = this, $capCont = self.$captionContainer, $cap = self.$caption, + $div = $cap.clone().css('height', 'auto').hide(); + $capCont.parent().before($div); + $capCont.removeClass('kv-has-ellipsis'); + if ($div.outerWidth() > $cap.outerWidth()) { + $capCont.addClass('kv-has-ellipsis'); + } + $div.remove(); + }, + listen: function () { + var self = this, $el = self.$element, $cap = self.$captionContainer, $btnFile = self.$btnFile, + $form = $el.closest('form'), $cont = self.$container; + handler($el, 'change', $.proxy(self.change, self)); + handler($(window), 'resize', function () { + self.setEllipsis(); + }); + handler($btnFile, 'click', function () { + self.raise('filebrowse'); + if (self.isError && !self.isUploadable) { + self.clear(); + } + $cap.focus(); + }); + handler($form, 'reset', $.proxy(self.reset, self)); + handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self)); + handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self)); + if (self.isUploadable && self.dropZoneEnabled && self.showPreview) { + self.initDragDrop(); + } + if (!self.isUploadable) { + handler($form, 'submit', $.proxy(self.submitForm, self)); + } + handler(self.$container.find('.kv-fileinput-upload'), 'click', function (e) { + var $btn = $(this), $form, isEnabled = !$btn.hasClass('disabled') && isEmpty($btn.attr('disabled')); + if (!self.isUploadable) { + if (isEnabled && $btn.attr('type') !== 'submit') { + $form = $btn.closest('form'); + // downgrade to normal form submit if possible + if ($form.length) { + $form.trigger('submit'); + } + e.preventDefault(); + } + return; + } + e.preventDefault(); + if (isEnabled) { + self.upload(); + } + }); + }, + submitForm: function () { + var self = this, $el = self.$element, files = $el.get(0).files; + if (files && files.length < self.minFileCount && self.minFileCount > 0) { + self.noFilesError({}); + return false; + } + return !self.abort({}); + }, + abort: function (params) { + var self = this, data; + if (self.ajaxAborted && typeof self.ajaxAborted === "object" && self.ajaxAborted.message !== undefined) { + data = $.extend(self.getOutData(), params); + data.abortData = self.ajaxAborted.data || {}; + data.abortMessage = self.ajaxAborted.message; + self.showUploadError(self.ajaxAborted.message, data, 'filecustomerror'); + return true; + } + return false; + }, + noFilesError: function (params) { + var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle, + msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label), + $error = self.$errorContainer; + $error.html(msg); + self.isError = true; + self.updateFileDetails(0); + $error.fadeIn(800); + self.raise('fileerror', [params]); + self.clearFileInput(); + addCss(self.$container, 'has-error'); + }, + setProgress: function (p) { + var self = this, pct = Math.min(p, 100), + template = pct < 100 ? self.progressTemplate : self.progressCompleteTemplate; + if (!isEmpty(template)) { + self.$progress.html(template.repl('{percent}', pct)); + } + }, + upload: function () { + var self = this, totLen = self.getFileStack().length, params = {}, + i, outData, len, hasExtraData = !$.isEmptyObject(self.getExtraData()); + if (totLen < self.minFileCount && self.minFileCount > 0) { + self.noFilesError(params); + return; + } + if (!self.isUploadable || self.isDisabled || (totLen === 0 && !hasExtraData)) { + return; + } + self.resetUpload(); + self.$progress.removeClass('hide'); + self.uploadCount = 0; + self.uploadPercent = 0; + self.lock(); + self.setProgress(0); + if (totLen === 0 && hasExtraData) { + self.uploadExtraOnly(); + return; + } + len = self.filestack.length; + self.hasInitData = false; + if (self.uploadAsync && self.showPreview) { + outData = self.getOutData(); + self.raise('filebatchpreupload', [outData]); + self.fileBatchCompleted = false; + self.uploadCache = {content: [], config: [], tags: [], append: true}; + for (i = 0; i < len; i += 1) { + if (self.filestack[i] !== undefined) { + self.uploadSingle(i, self.filestack, true); + } + } + return; + } + self.uploadBatch(); + }, + lock: function () { + var self = this; + self.resetErrors(); + self.disable(); + if (self.showRemove) { + addCss(self.$container.find('.fileinput-remove'), 'hide'); + } + if (self.showCancel) { + self.$container.find('.fileinput-cancel').removeClass('hide'); + } + self.raise('filelock', [self.filestack, self.getExtraData()]); + }, + unlock: function (reset) { + var self = this; + if (reset === undefined) { + reset = true; + } + self.enable(); + if (self.showCancel) { + addCss(self.$container.find('.fileinput-cancel'), 'hide'); + } + if (self.showRemove) { + self.$container.find('.fileinput-remove').removeClass('hide'); + } + if (reset) { + self.resetFileStack(); + } + self.raise('fileunlock', [self.filestack, self.getExtraData()]); + }, + resetFileStack: function () { + var self = this, i = 0, newstack = []; + self.getThumbs().each(function () { + var $thumb = $(this), ind = $thumb.attr('data-fileindex'), + file = self.filestack[ind]; + if (ind === -1) { + return; + } + if (file !== undefined) { + newstack[i] = file; + $thumb.attr({ + 'id': self.previewInitId + '-' + i, + 'data-fileindex': i + }); + i += 1; + } else { + $thumb.attr({ + 'id': 'uploaded-' + uniqId(), + 'data-fileindex': '-1' + }); + } + }); + self.filestack = newstack; + }, + destroy: function () { + var self = this, $cont = self.$container; + $cont.find('.file-drop-zone').off(); + self.$element.insertBefore($cont).off('.fileinput').removeData(); + $cont.off().remove(); + }, + refresh: function (options) { + var self = this, $el = self.$element; + options = options ? $.extend(self.options, options) : self.options; + self.destroy(); + $el.fileinput(options); + if ($el.val()) { + $el.trigger('change.fileinput'); + } + }, + initDragDrop: function () { + var self = this, $zone = self.$container.find('.file-drop-zone'), + allEvents = 'dragenter.fileinput dragover.fileinput drop.fileinput'; + handler($zone, 'dragenter.fileinput dragover.fileinput', function (e) { + var hasFiles = $.inArray('Files', e.originalEvent.dataTransfer.types) > -1; + e.stopPropagation(); + e.preventDefault(); + if (self.isDisabled || !hasFiles) { + e.originalEvent.dataTransfer.effectAllowed = 'none'; + e.originalEvent.dataTransfer.dropEffect = 'none'; + return; + } + addCss($(this), 'highlighted'); + }, true); + handler($zone, 'dragleave', function (e) { + e.stopPropagation(); + e.preventDefault(); + if (self.isDisabled) { + return; + } + $(this).removeClass('highlighted'); + }); + handler($zone, 'drop', function (e) { + e.preventDefault(); + if (self.isDisabled || isEmpty(e.originalEvent.dataTransfer.files)) { + return; + } + self.change(e, 'dragdrop'); + $(this).removeClass('highlighted'); + }); + handler($(document), allEvents, function (e) { + e.stopPropagation(); + e.preventDefault(); + }, true); + }, + setFileDropZoneTitle: function () { + var self = this, $zone = self.$container.find('.file-drop-zone'); + $zone.find('.' + self.dropZoneTitleClass).remove(); + if (!self.isUploadable || !self.showPreview || $zone.length === 0 || self.getFileStack().length > 0 || !self.dropZoneEnabled) { + return; + } + if ($zone.find('.file-preview-frame').length === 0) { + $zone.prepend('
      ' + self.dropZoneTitle + '
      '); + } + self.$container.removeClass('file-input-new'); + addCss(self.$container, 'file-input-ajax-new'); + }, + initFileActions: function () { + var self = this; + self.$preview.find('.kv-file-remove').each(function () { + var $el = $(this), $frame = $el.closest('.file-preview-frame'), + ind = $frame.attr('data-fileindex'), n, cap; + handler($el, 'click', function () { + self.cleanMemory($frame); + $frame.fadeOut('slow', function () { + self.filestack[ind] = undefined; + self.clearObjects($frame); + $frame.remove(); + var filestack = self.getFileStack(true), len = filestack.length, + cGS = previewCache.count(self.id); + self.clearFileInput(); + if (len === 0 && cGS === 0) { + self.reset(); + } else { + n = cGS + len; + cap = n > 1 ? self.getMsgSelected(n) : (filestack[0] ? filestack[0].name : ''); + self.setCaption(cap); + } + }); + }); + }); + self.$preview.find('.kv-file-upload').each(function () { + var $el = $(this); + handler($el, 'click', function () { + var $frame = $el.closest('.file-preview-frame'), + ind = $frame.attr('data-fileindex'); + self.uploadSingle(ind, self.filestack, false); + }); + }); + }, + getMsgSelected: function (n) { + var self = this, strFiles = n === 1 ? self.fileSingle : self.filePlural; + return self.msgSelected.replace('{n}', n).replace('{files}', strFiles); + }, + renderFileFooter: function (caption, width) { + var self = this, config = self.fileActionSettings, footer, out, + template = self.getLayoutTemplate('footer'); + if (self.isUploadable) { + footer = template.repl('{actions}', self.renderFileActions(true, true, false, false, false)); + out = footer.repl('{caption}', caption) + .repl('{width}', width) + .repl('{indicator}', config.indicatorNew) + .repl('{indicatorTitle}', config.indicatorNewTitle); + } else { + out = template.repl('{actions}', '') + .repl('{caption}', caption) + .repl('{width}', width) + .repl('{indicator}', '') + .repl('{indicatorTitle}', ''); + } + out = replaceTags(out, self.previewThumbTags); + return out; + }, + renderFileActions: function (showUpload, showDelete, disabled, url, key) { + if (!showUpload && !showDelete) { + return ''; + } + var self = this, + vUrl = url === false ? '' : ' data-url="' + url + '"', + vKey = key === false ? '' : ' data-key="' + key + '"', + btnDelete = self.getLayoutTemplate('actionDelete'), + btnUpload = '', + template = self.getLayoutTemplate('actions'), + otherButtons = self.otherActionButtons.repl('{dataKey}', vKey), + config = self.fileActionSettings, + removeClass = disabled ? config.removeClass + ' disabled' : config.removeClass; + btnDelete = btnDelete + .repl('{removeClass}', removeClass) + .repl('{removeIcon}', config.removeIcon) + .repl('{removeTitle}', config.removeTitle) + .repl('{dataUrl}', vUrl) + .repl('{dataKey}', vKey); + if (showUpload) { + btnUpload = self.getLayoutTemplate('actionUpload') + .repl('{uploadClass}', config.uploadClass) + .repl('{uploadIcon}', config.uploadIcon) + .repl('{uploadTitle}', config.uploadTitle); + } + return template + .repl('{delete}', btnDelete) + .repl('{upload}', btnUpload) + .repl('{other}', otherButtons); + }, + setThumbStatus: function ($thumb, status) { + var self = this, icon = 'indicator' + status, msg = icon + 'Title', + css = 'file-preview-' + status.toLowerCase(), + $indicator = $thumb.find('.file-upload-indicator'), + config = self.fileActionSettings; + $thumb.removeClass('file-preview-success file-preview-error file-preview-loading'); + $indicator.html(config[icon]); + $indicator.attr('title', config[msg]); + $thumb.addClass(css); + }, + clearPreview: function () { + var self = this, $thumbs = !self.showUploadedThumbs ? self.$preview.find('.file-preview-frame') : + self.$preview.find('.file-preview-frame:not(.file-preview-success)'); + $thumbs.remove(); + if (!self.$preview.find('.file-preview-frame').length || !self.showPreview) { + self.resetUpload(); + } + }, + initPreview: function (isInit) { + var self = this, cap = self.initialCaption || '', out; + if (!previewCache.count(self.id)) { + self.clearPreview(); + if (isInit) { + self.setCaption(cap); + } else { + self.initCaption(); + } + return; + } + out = previewCache.out(self.id); + cap = isInit && self.initialCaption ? self.initialCaption : out.caption; + self.$preview.html(out.content); + self.setCaption(cap); + if (!isEmpty(out.content)) { + self.$container.removeClass('file-input-new'); + } + }, + initPreviewDeletes: function () { + var self = this, deleteExtraData = self.deleteExtraData || {}, + resetProgress = function () { + if (self.$preview.find('.kv-file-remove').length === 0) { + self.reset(); + self.initialCaption = ''; + } + }; + + self.$preview.find('.kv-file-remove').each(function () { + var $el = $(this), vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key'); + if (isEmpty(vUrl) || vKey === undefined) { + return; + } + var $frame = $el.closest('.file-preview-frame'), cache = previewCache.data[self.id], + settings, params, index = $frame.data('fileindex'), config, extraData; + index = parseInt(index.replace('init_', '')); + config = isEmpty(cache.config) && isEmpty(cache.config[index]) ? null : cache.config[index]; + extraData = isEmpty(config) || isEmpty(config.extra) ? deleteExtraData : config.extra; + if (typeof extraData === "function") { + extraData = extraData(); + } + params = {id: $el.attr('id'), key: vKey, extra: extraData}; + settings = $.extend({ + url: vUrl, + type: 'POST', + dataType: 'json', + data: $.extend({key: vKey}, extraData), + beforeSend: function (jqXHR) { + self.ajaxAborted = false; + self.raise('filepredelete', [vKey, jqXHR, extraData]); + if (self.ajaxAborted) { + jqXHR.abort(); + } else { + addCss($frame, 'file-uploading'); + addCss($el, 'disabled'); + } + }, + success: function (data, textStatus, jqXHR) { + var n, cap; + if (isEmpty(data) || isEmpty(data.error)) { + previewCache.unset(self.id, index); + n = previewCache.count(self.id); + cap = n > 0 ? self.getMsgSelected(n) : ''; + self.raise('filedeleted', [vKey, jqXHR, extraData]); + self.setCaption(cap); + } else { + params.jqXHR = jqXHR; + params.response = data; + self.showError(data.error, params, 'filedeleteerror'); + $frame.removeClass('file-uploading'); + $el.removeClass('disabled'); + resetProgress(); + return; + } + $frame.removeClass('file-uploading').addClass('file-deleted'); + $frame.fadeOut('slow', function () { + self.clearObjects($frame); + $frame.remove(); + resetProgress(); + if (!n && self.getFileStack().length === 0) { + self.setCaption(''); + self.reset(); + } + }); + }, + error: function (jqXHR, textStatus, errorThrown) { + var errMsg = self.parseError(jqXHR, errorThrown); + params.jqXHR = jqXHR; + params.response = {}; + self.showError(errMsg, params, 'filedeleteerror'); + $frame.removeClass('file-uploading'); + resetProgress(); + } + }, self.ajaxDeleteSettings); + handler($el, 'click', function () { + $.ajax(settings); + }); + }); + }, + clearObjects: function ($el) { + $el.find('video audio').each(function () { + this.pause(); + $(this).remove(); + }); + $el.find('img object div').each(function () { + $(this).remove(); + }); + }, + clearFileInput: function () { + var self = this, $el = self.$element, $srcFrm, $tmpFrm, $tmpEl; + if (isEmpty($el.val())) { + return; + } + // Fix for IE ver < 11, that does not clear file inputs + // Requires a sequence of steps to prevent IE crashing but + // still allow clearing of the file input. + if (self.isIE9 || self.isIE10) { + $srcFrm = $el.closest('form'); + $tmpFrm = $(document.createElement('form')); + $tmpEl = $(document.createElement('div')); + $el.before($tmpEl); + if ($srcFrm.length) { + $srcFrm.after($tmpFrm); + } else { + $tmpEl.after($tmpFrm); + } + $tmpFrm.append($el).trigger('reset'); + $tmpEl.before($el).remove(); + $tmpFrm.remove(); + } else { // normal input clear behavior for other sane browsers + $el.val(''); + } + self.fileInputCleared = true; + }, + resetUpload: function () { + var self = this; + self.uploadCache = {content: [], config: [], tags: [], append: true}; + self.uploadCount = 0; + self.uploadPercent = 0; + self.$btnUpload.removeAttr('disabled'); + self.setProgress(0); + addCss(self.$progress, 'hide'); + self.resetErrors(false); + self.ajaxAborted = false; + self.ajaxRequests = []; + }, + cancel: function () { + var self = this, xhr = self.ajaxRequests, len = xhr.length, i; + if (len > 0) { + for (i = 0; i < len; i += 1) { + xhr[i].abort(); + } + } + self.getThumbs().each(function () { + var $thumb = $(this), ind = $thumb.attr('data-fileindex'); + $thumb.removeClass('file-uploading'); + if (self.filestack[ind] !== undefined) { + $thumb.find('.kv-file-upload').removeClass('disabled').removeAttr('disabled'); + $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled'); + } + self.unlock(); + }); + }, + cleanMemory: function ($thumb) { + var data = $thumb.is('img') ? $thumb.attr('src') : $thumb.find('source').attr('src'); + objUrl.revokeObjectURL(data); + }, + hasInitialPreview: function () { + var self = this; + return !self.overwriteInitial && previewCache.count(self.id); + }, + clear: function () { + var self = this, cap; + self.$btnUpload.removeAttr('disabled'); + self.getThumbs().find('video,audio,img').each(function () { + self.cleanMemory($(this)); + }); + self.resetUpload(); + self.filestack = []; + self.clearFileInput(); + self.resetErrors(true); + self.raise('fileclear'); + if (self.hasInitialPreview()) { + self.showFileIcon(); + self.resetPreview(); + self.setEllipsis(); + self.initPreviewDeletes(); + self.$container.removeClass('file-input-new'); + } else { + self.getThumbs().each(function () { + self.clearObjects($(this)); + }); + if (self.isUploadable) { + previewCache.data[self.id] = {}; + } + self.$preview.html(''); + cap = (!self.overwriteInitial && self.initialCaption.length > 0) ? self.initialCaption : ''; + self.setCaption(cap); + self.setEllipsis(); + self.$caption.attr('title', ''); + addCss(self.$container, 'file-input-new'); + } + if (self.$container.find('.file-preview-frame').length === 0) { + if (!self.initCaption()) { + self.$captionContainer.find('.kv-caption-icon').hide(); + } + self.setEllipsis(); + } + self.hideFileIcon(); + self.raise('filecleared'); + self.$captionContainer.focus(); + self.setFileDropZoneTitle(); + }, + resetPreview: function () { + var self = this, out; + if (previewCache.count(self.id)) { + out = previewCache.out(self.id); + self.$preview.html(out.content); + self.setCaption(out.caption); + } else { + self.clearPreview(); + self.initCaption(); + } + }, + resetPreviewThumbs: function (isAjax) { + var self = this, out; + if (isAjax) { + self.clearPreview(); + self.filestack = []; + return; + } + if (self.hasInitialPreview()) { + out = previewCache.out(self.id); + self.$preview.html(out.content); + self.setCaption(out.caption); + self.initPreviewDeletes(); + } else { + self.clearPreview(); + } + }, + reset: function () { + var self = this; + self.resetPreview(); + self.setEllipsis(); + self.$container.find('.fileinput-filename').text(''); + self.raise('filereset'); + addCss(self.$container, 'file-input-new'); + if (self.$preview.find('.file-preview-frame').length || self.isUploadable && self.dropZoneEnabled) { + self.$container.removeClass('file-input-new'); + } + self.setFileDropZoneTitle(); + self.filestack = []; + self.formdata = {}; + }, + disable: function () { + var self = this; + self.isDisabled = true; + self.raise('filedisabled'); + self.$element.attr('disabled', 'disabled'); + self.$container.find(".kv-fileinput-caption").addClass("file-caption-disabled"); + self.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload, .file-preview-frame button").attr("disabled", + true); + self.initDragDrop(); + }, + enable: function () { + var self = this; + self.isDisabled = false; + self.raise('fileenabled'); + self.$element.removeAttr('disabled'); + self.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled"); + self.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload, .file-preview-frame button").removeAttr("disabled"); + self.initDragDrop(); + }, + getThumbs: function (css) { + css = css || ''; + return this.$preview.find('.file-preview-frame:not(.file-preview-initial)' + css); + }, + getExtraData: function (previewId, index) { + var self = this, data = self.uploadExtraData; + if (typeof self.uploadExtraData === "function") { + data = self.uploadExtraData(previewId, index); + } + return data; + }, + uploadExtra: function (previewId, index) { + var self = this, data = self.getExtraData(previewId, index); + if (data.length === 0) { + return; + } + $.each(data, function (key, value) { + self.formdata.append(key, value); + }); + }, + initXhr: function (xhrobj, factor) { + var self = this; + if (xhrobj.upload) { + xhrobj.upload.addEventListener('progress', function (event) { + var pct = 0, position = event.loaded || event.position, total = event.total; + if (event.lengthComputable) { + pct = Math.ceil(position / total * factor); + } + self.uploadPercent = Math.max(pct, self.uploadPercent); + self.setProgress(self.uploadPercent); + }, false); + } + return xhrobj; + }, + ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError, previewId, index) { + var self = this, settings; + self.raise('filepreajax', [previewId, index]); + self.uploadExtra(previewId, index); + settings = $.extend({ + xhr: function () { + var xhrobj = $.ajaxSettings.xhr(); + return self.initXhr(xhrobj, 98); + }, + url: self.uploadUrl, + type: 'POST', + dataType: 'json', + data: self.formdata, + cache: false, + processData: false, + contentType: false, + beforeSend: fnBefore, + success: fnSuccess, + complete: fnComplete, + error: fnError + }, self.ajaxSettings); + self.ajaxRequests.push($.ajax(settings)); + }, + initUploadSuccess: function (out, $thumb, allFiles) { + var self = this, append, data, index, $newThumb, content, config, tags; + if (typeof out !== 'object' || $.isEmptyObject(out)) { + return; + } + if (out.initialPreview !== undefined && out.initialPreview.length > 0) { + self.hasInitData = true; + content = out.initialPreview || []; + config = out.initialPreviewConfig || []; + tags = out.initialPreviewThumbTags || []; + append = out.append === undefined || out.append ? true : false; + self.overwriteInitial = false; + if ($thumb !== undefined && !allFiles) { + index = previewCache.add(self.id, content, config[0], tags[0], append); + data = previewCache.get(self.id, index, false); + $newThumb = $(data).hide(); + $thumb.after($newThumb).fadeOut('slow', function () { + $newThumb.fadeIn('slow').css('display:inline-block'); + self.initPreviewDeletes(); + self.clearFileInput(); + $thumb.remove(); + }); + } else { + if (allFiles) { + self.uploadCache.content.push(content[0]); + self.uploadCache.config.push(config[0]); + self.uploadCache.tags.push(tags[0]); + self.uploadCache.append = append; + } else { + previewCache.set(self.id, content, config, tags, append); + self.initPreview(); + self.initPreviewDeletes(); + } + } + } + }, + initSuccessThumbs: function () { + var self = this; + self.getThumbs('.file-preview-success').each(function () { + var $thumb = $(this), $remove = $thumb.find('.kv-file-remove'); + $remove.removeAttr('disabled'); + handler($remove, 'click', function () { + var out = self.raise('filesuccessremove', [$thumb.attr('id'), $thumb.data('fileindex')]); + self.cleanMemory($thumb); + if (out === false) { + return; + } + $thumb.fadeOut('slow', function () { + $thumb.remove(); + if (!self.$preview.find('.file-preview-frame').length) { + self.reset(); + } + }); + }); + }); + }, + uploadSingle: function (i, files, allFiles) { + var self = this, total = self.getFileStack().length, formdata = new FormData(), outData, + previewId = self.previewInitId + "-" + i, $thumb = $('#' + previewId + ':not(.file-preview-initial)'), + pct, cGSComplete, $btnUpload = $thumb.find('.kv-file-upload'), $btnDelete = $thumb.find('.kv-file-remove'), + updateProgress, hasPostData = self.filestack.length > 0 || !$.isEmptyObject(self.uploadExtraData), + resetActions, fnBefore, fnSuccess, fnComplete, fnError, params = {id: previewId, index: i}; + self.formdata = formdata; + if (total === 0 || !hasPostData || $btnUpload.hasClass('disabled') || self.abort(params)) { + return; + } + cGSComplete = function () { + var $thumbs = self.getThumbs('.file-uploading'); + if ($thumbs.length > 0 || self.fileBatchCompleted) { + return; + } + self.fileBatchCompleted = true; + setTimeout(function () { + previewCache.set(self.id, self.uploadCache.content, self.uploadCache.config, self.uploadCache.tags, + self.uploadCache.append); + if (self.hasInitData) { + self.initPreview(); + self.initPreviewDeletes(); + } + self.setProgress(100); + self.unlock(); + self.clearFileInput(); + self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]); + }, 100); + }; + updateProgress = function () { + if (!allFiles || total === 0 || self.uploadPercent >= 100) { + return; + } + self.uploadCount += 1; + pct = 80 + Math.ceil(self.uploadCount * 20 / total); + self.uploadPercent = Math.max(pct, self.uploadPercent); + self.setProgress(self.uploadPercent); + self.initPreviewDeletes(); + }; + resetActions = function () { + $btnUpload.removeAttr('disabled'); + $btnDelete.removeAttr('disabled'); + $thumb.removeClass('file-uploading'); + }; + fnBefore = function (jqXHR) { + outData = self.getOutData(jqXHR); + if (!$thumb.hasClass('file-preview-success')) { + self.setThumbStatus($thumb, 'Loading'); + addCss($thumb, 'file-uploading'); + } + $btnUpload.attr('disabled', true); + $btnDelete.attr('disabled', true); + if (!allFiles) { + self.lock(); + } + self.raise('filepreupload', [outData, previewId, i]); + params = $.extend(params, outData); + if (self.abort(params)) { + jqXHR.abort(); + self.setProgress(100); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + outData = self.getOutData(jqXHR, data); + params = $.extend(params, outData); + setTimeout(function () { + if (isEmpty(data) || isEmpty(data.error)) { + self.setThumbStatus($thumb, 'Success'); + $btnUpload.hide(); + self.filestack[i] = undefined; + self.raise('fileuploaded', [outData, previewId, i]); + self.initUploadSuccess(data, $thumb, allFiles); + if (!allFiles) { + self.resetFileStack(); + } + } else { + self.setThumbStatus($thumb, 'Error'); + self.showUploadError(data.error, params); + } + }, 100); + }; + fnComplete = function () { + setTimeout(function () { + updateProgress(); + resetActions(); + if (!allFiles) { + self.unlock(false); + } else { + cGSComplete(); + } + self.initSuccessThumbs(); + }, 100); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var errMsg = self.parseError(jqXHR, errorThrown, (allFiles ? files[i].name : null)); + self.setThumbStatus($thumb, 'Error'); + params = $.extend(params, self.getOutData(jqXHR)); + self.showUploadError(errMsg, params); + }; + formdata.append(self.uploadFileAttr, files[i]); + formdata.append('file_id', i); + self.ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, previewId, i); + }, + uploadBatch: function () { + var self = this, files = self.filestack, total = files.length, config, + hasPostData = self.filestack.length > 0 || !$.isEmptyObject(self.uploadExtraData), + setAllUploaded, enableActions, fnBefore, fnSuccess, fnComplete, fnError, + params = {}; + self.formdata = new FormData(); + if (total === 0 || !hasPostData || self.abort(params)) { + return; + } + setAllUploaded = function () { + $.each(files, function (key) { + self.filestack[key] = undefined; + }); + self.clearFileInput(); + }; + fnBefore = function (jqXHR) { + self.lock(); + var outData = self.getOutData(jqXHR); + if (self.showPreview) { + self.getThumbs().each(function () { + var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'), + $btnDelete = $thumb.find('.kv-file-remove'); + if (!$thumb.hasClass('file-preview-success')) { + self.setThumbStatus($thumb, 'Loading'); + addCss($thumb, 'file-uploading'); + } + $btnUpload.attr('disabled', true); + $btnDelete.attr('disabled', true); + }); + } + self.raise('filebatchpreupload', [outData]); + if (self.abort(outData)) { + jqXHR.abort(); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + var outData = self.getOutData(jqXHR, data), $thumbs = self.getThumbs(), + keys = isEmpty(data.errorkeys) ? [] : data.errorkeys, key = 0; + if (isEmpty(data) || isEmpty(data.error)) { + self.raise('filebatchuploadsuccess', [outData]); + setAllUploaded(); + if (self.showPreview) { + $thumbs.each(function () { + var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'); + $thumb.find('.kv-file-upload').hide(); + self.setThumbStatus($thumb, 'Success'); + $thumb.removeClass('file-uploading'); + $btnUpload.removeAttr('disabled'); + }); + self.initUploadSuccess(data); + } else { + self.reset(); + } + } else { + if (self.showPreview) { + $thumbs.each(function () { + var $thumb = $(this), $btnDelete = $thumb.find('.kv-file-remove'), + $btnUpload = $thumb.find('.kv-file-upload'); + $thumb.removeClass('file-uploading'); + $btnUpload.removeAttr('disabled'); + $btnDelete.removeAttr('disabled'); + if (keys.length === 0) { + self.setThumbStatus($thumb, 'Error'); + return; + } + if ($.inArray(key, keys) !== -1) { + self.setThumbStatus($thumb, 'Error'); + } else { + $thumb.find('.kv-file-upload').hide(); + self.setThumbStatus($thumb, 'Success'); + self.filestack[key] = undefined; + } + key++; + }); + self.initUploadSuccess(data); + } + self.showUploadError(data.error, outData, 'filebatchuploaderror'); + } + }; + fnComplete = function () { + self.setProgress(100); + self.unlock(); + self.initSuccessThumbs(); + self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]); + self.clearFileInput(); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var outData = self.getOutData(jqXHR), errMsg = self.parseError(jqXHR, errorThrown); + self.showUploadError(errMsg, outData, 'filebatchuploaderror'); + self.uploadFileCount = total - 1; + if (!self.showPreview) { + return; + } + self.getThumbs().each(function () { + var $thumb = $(this), key = $thumb.attr('data-fileindex'); + $thumb.removeClass('file-uploading'); + if (self.filestack[key] !== undefined) { + self.setThumbStatus($thumb, 'Error'); + } + }); + self.getThumbs().removeClass('file-uploading'); + self.getThumbs(' .kv-file-upload').removeAttr('disabled'); + self.getThumbs(' .kv-file-delete').removeAttr('disabled'); + }; + $.each(files, function (key, data) { + if (!isEmpty(files[key])) { + self.formdata.append(self.uploadFileAttr, data); + } + }); + self.ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError); + }, + uploadExtraOnly: function () { + var self = this, params = {}, fnBefore, fnSuccess, fnComplete, fnError; + self.formdata = new FormData(); + if (self.abort(params)) { + return; + } + fnBefore = function (jqXHR) { + self.lock(); + var outData = self.getOutData(jqXHR); + self.raise('filebatchpreupload', [outData]); + self.setProgress(50); + params.data = outData; + params.xhr = jqXHR; + if (self.abort(params)) { + jqXHR.abort(); + self.setProgress(100); + } + }; + fnSuccess = function (data, textStatus, jqXHR) { + var outData = self.getOutData(jqXHR, data); + if (isEmpty(data) || isEmpty(data.error)) { + self.raise('filebatchuploadsuccess', [outData]); + self.clearFileInput(); + self.initUploadSuccess(data); + } else { + self.showUploadError(data.error, outData, 'filebatchuploaderror'); + } + }; + fnComplete = function () { + self.setProgress(100); + self.unlock(); + self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]); + self.clearFileInput(); + }; + fnError = function (jqXHR, textStatus, errorThrown) { + var outData = self.getOutData(jqXHR), errMsg = self.parseError(jqXHR, errorThrown); + params.data = outData; + self.showUploadError(errMsg, outData, 'filebatchuploaderror'); + }; + self.ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError); + }, + hideFileIcon: function () { + if (this.overwriteInitial) { + this.$captionContainer.find('.kv-caption-icon').hide(); + } + }, + showFileIcon: function () { + this.$captionContainer.find('.kv-caption-icon').show(); + }, + resetErrors: function (fade) { + var self = this, $error = self.$errorContainer; + self.isError = false; + self.$container.removeClass('has-error'); + $error.html(''); + if (fade) { + $error.fadeOut('slow'); + } else { + $error.hide(); + } + }, + showFolderError: function (folders) { + var self = this, $error = self.$errorContainer; + if (!folders) { + return; + } + $error.html(self.msgFoldersNotAllowed.repl('{n}', folders)); + $error.fadeIn(800); + addCss(self.$container, 'has-error'); + self.raise('filefoldererror', [folders]); + }, + showUploadError: function (msg, params, event) { + var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror'; + if ($error.find('ul').length === 0) { + $error.html('
      • ' + msg + '
      '); + } else { + $error.find('ul').append('
    • ' + msg + '
    • '); + } + $error.fadeIn(800); + self.raise(ev, [params]); + self.$container.removeClass('file-input-new'); + addCss(self.$container, 'has-error'); + return true; + }, + showError: function (msg, params, event) { + var self = this, $error = self.$errorContainer, ev = event || 'fileerror'; + params = params || {}; + params.reader = self.reader; + $error.html(msg); + $error.fadeIn(800); + self.raise(ev, [params]); + if (!self.isUploadable) { + self.clearFileInput(); + } + self.$container.removeClass('file-input-new'); + addCss(self.$container, 'has-error'); + self.$btnUpload.attr('disabled', true); + return true; + }, + errorHandler: function (evt, caption) { + var self = this, err = evt.target.error; + switch (err.code) { + case err.NOT_FOUND_ERR: + self.showError(self.msgFileNotFound.replace('{name}', caption)); + break; + case err.SECURITY_ERR: + self.showError(self.msgFileSecured.replace('{name}', caption)); + break; + case err.NOT_READABLE_ERR: + self.showError(self.msgFileNotReadable.replace('{name}', caption)); + break; + case err.ABORT_ERR: + self.showError(self.msgFilePreviewAborted.replace('{name}', caption)); + break; + default: + self.showError(self.msgFilePreviewError.replace('{name}', caption)); + } + }, + parseFileType: function (file) { + var self = this, isValid, vType, cat, i; + for (i = 0; i < defaultPreviewTypes.length; i += 1) { + cat = defaultPreviewTypes[i]; + isValid = isSet(cat, self.fileTypeSettings) ? self.fileTypeSettings[cat] : defaultFileTypeSettings[cat]; + vType = isValid(file.type, file.name) ? cat : ''; + if (!isEmpty(vType)) { + return vType; + } + } + return 'other'; + }, + previewDefault: function (file, previewId, isDisabled) { + if (!this.showPreview) { + return; + } + var self = this, data = objUrl.createObjectURL(file), $obj = $('#' + previewId), + config = self.previewSettings.other || defaultPreviewSettings.other, + footer = self.renderFileFooter(file.name, config.width), + previewOtherTemplate = self.getPreviewTemplate('other'), + ind = previewId.slice(previewId.lastIndexOf('-') + 1), + frameClass = ''; + if (isDisabled === true) { + frameClass = ' btn disabled'; + footer += '
      '; + } + self.$preview.append("\n" + previewOtherTemplate + .repl('{previewId}', previewId) + .repl('{frameClass}', frameClass) + .repl('{fileindex}', ind) + .repl('{caption}', self.slug(file.name)) + .repl('{width}', config.width) + .repl('{height}', config.height) + .repl('{type}', file.type) + .repl('{data}', data) + .repl('{footer}', footer)); + }, + previewFile: function (i, file, theFile, previewId, data) { + if (!this.showPreview) { + return; + } + var self = this, cat = self.parseFileType(file), caption = self.slug(file.name), content, strText, + types = self.allowedPreviewTypes, mimes = self.allowedPreviewMimeTypes, + tmplt = self.getPreviewTemplate(cat), + config = isSet(cat, self.previewSettings) ? self.previewSettings[cat] : defaultPreviewSettings[cat], + wrapLen = parseInt(self.wrapTextLength, 10), wrapInd = self.wrapIndicator, + cGSTypes = types.indexOf(cat) >= 0, id, height, + cGSMimes = isEmpty(mimes) || (!isEmpty(mimes) && mimes.indexOf(file.type) !== -1), + footer = self.renderFileFooter(caption, config.width), modal = '', + ind = previewId.slice(previewId.lastIndexOf('-') + 1); + if (cGSTypes && cGSMimes) { + if (cat === 'text') { + strText = htmlEncode(theFile.target.result); + if (strText.length > wrapLen) { + id = 'text-' + uniqId(); + height = window.innerHeight * 0.75; + modal = self.getLayoutTemplate('modal').repl('{id}', id) + .repl('{title}', caption) + .repl('{height}', height) + .repl('{body}', strText); + wrapInd = wrapInd + .repl('{title}', caption) + .repl('{dialog}', "$('#" + id + "').modal('show')"); + strText = strText.substring(0, (wrapLen - 1)) + wrapInd; + } + content = tmplt.repl('{previewId}', previewId).repl('{caption}', caption) + .repl('{frameClass}', '') + .repl('{type}', file.type).repl('{width}', config.width) + .repl('{height}', config.height).repl('{data}', strText) + .repl('{footer}', footer).repl('{fileindex}', ind) + modal; + } else { + content = tmplt.repl('{previewId}', previewId).repl('{caption}', caption) + .repl('{frameClass}', '') + .repl('{type}', file.type).repl('{data}', data) + .repl('{width}', config.width).repl('{height}', config.height) + .repl('{footer}', footer).repl('{fileindex}', ind); + } + self.$preview.append("\n" + content); + self.validateImage(i, previewId); + } else { + self.previewDefault(file, previewId); + } + }, + slugDefault: function (text) { + return isEmpty(text) ? '' : text.split(/(\\|\/)/g).pop().replace(/[^\w\u00C0-\u017F\-.\\\/ ]+/g, ''); + }, + getFileStack: function (skipNull) { + var self = this, status; + return self.filestack.filter(function (n) { + return (skipNull ? n !== undefined : n !== undefined && n !== null); + }); + }, + readFiles: function (files) { + this.reader = new FileReader(); + var self = this, $el = self.$element, $preview = self.$preview, reader = self.reader, + $container = self.$previewContainer, $status = self.$previewStatus, msgLoading = self.msgLoading, + msgProgress = self.msgProgress, previewInitId = self.previewInitId, numFiles = files.length, + settings = self.fileTypeSettings, ctr = self.filestack.length, + throwError = function (msg, file, previewId, index) { + var p1 = $.extend(self.getOutData({}, {}, files), {id: previewId, index: index}), + p2 = {id: previewId, index: index, file: file, files: files}; + self.previewDefault(file, previewId, true); + return self.isUploadable ? self.showUploadError(msg, p1) : self.showError(msg, p2); + }; + + function readFile(i) { + if (isEmpty($el.attr('multiple'))) { + numFiles = 1; + } + if (i >= numFiles) { + if (self.isUploadable && self.filestack.length > 0) { + self.raise('filebatchselected', [self.getFileStack()]); + } else { + self.raise('filebatchselected', [files]); + } + $container.removeClass('loading'); + $status.html(''); + return; + } + var node = ctr + i, previewId = previewInitId + "-" + node, isText, file = files[i], + caption = self.slug(file.name), fileSize = (file.size || 0) / 1000, checkFile, fileExtExpr = '', + previewData = objUrl.createObjectURL(file), fileCount = 0, j, msg, typ, cGS, + fileTypes = self.allowedFileTypes, strTypes = isEmpty(fileTypes) ? '' : fileTypes.join(', '), + fileExt = self.allowedFileExtensions, strExt = isEmpty(fileExt) ? '' : fileExt.join(', '); + if (!isEmpty(fileExt)) { + fileExtExpr = new RegExp('\\.(' + fileExt.join('|') + ')$', 'i'); + } + fileSize = fileSize.toFixed(2); + if (self.maxFileSize > 0 && fileSize > self.maxFileSize) { + msg = self.msgSizeTooLarge.replace('{name}', caption) + .replace('{size}', fileSize) + .replace('{maxSize}', self.maxFileSize); + self.isError = throwError(msg, file, previewId, i); + return; + } + if (!isEmpty(fileTypes) && isArray(fileTypes)) { + for (j = 0; j < fileTypes.length; j += 1) { + typ = fileTypes[j]; + checkFile = settings[typ]; + cGS = (checkFile !== undefined && checkFile(file.type, caption)); + fileCount += isEmpty(cGS) ? 0 : cGS.length; + } + if (fileCount === 0) { + msg = self.msgInvalidFileType.replace('{name}', caption).replace('{types}', strTypes); + self.isError = throwError(msg, file, previewId, i); + return; + } + } + if (fileCount === 0 && !isEmpty(fileExt) && isArray(fileExt) && !isEmpty(fileExtExpr)) { + cGS = caption.match(fileExtExpr); + fileCount += isEmpty(cGS) ? 0 : cGS.length; + if (fileCount === 0) { + msg = self.msgInvalidFileExtension.replace('{name}', caption).replace('{extensions}', + strExt); + self.isError = throwError(msg, file, previewId, i); + return; + } + } + if (!self.showPreview) { + self.filestack.push(file); + setTimeout(readFile(i + 1), 100); + self.raise('fileloaded', [file, previewId, i, reader]); + return; + } + if ($preview.length > 0 && FileReader !== undefined) { + $status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles)); + $container.addClass('loading'); + reader.onerror = function (evt) { + self.errorHandler(evt, caption); + }; + reader.onload = function (theFile) { + self.previewFile(i, file, theFile, previewId, previewData); + self.initFileActions(); + }; + reader.onloadend = function () { + msg = msgProgress + .replace('{index}', i + 1).replace('{files}', numFiles) + .replace('{percent}', 50).replace('{name}', caption); + setTimeout(function () { + $status.html(msg); + self.updateFileDetails(numFiles); + readFile(i + 1); + }, 100); + self.raise('fileloaded', [file, previewId, i, reader]); + }; + reader.onprogress = function (data) { + if (data.lengthComputable) { + var fact = (data.loaded / data.total) * 100, progress = Math.ceil(fact); + msg = msgProgress.replace('{index}', i + 1).replace('{files}', numFiles) + .replace('{percent}', progress).replace('{name}', caption); + setTimeout(function () { + $status.html(msg); + }, 100); + } + }; + isText = isSet('text', settings) ? settings.text : defaultFileTypeSettings.text; + if (isText(file.type, caption)) { + reader.readAsText(file, self.textEncoding); + } else { + reader.readAsArrayBuffer(file); + } + } else { + self.previewDefault(file, previewId); + setTimeout(function () { + readFile(i + 1); + self.updateFileDetails(numFiles); + }, 100); + self.raise('fileloaded', [file, previewId, i, reader]); + } + self.filestack.push(file); + } + + readFile(0); + self.updateFileDetails(numFiles, false); + }, + updateFileDetails: function (numFiles) { + var self = this, $el = self.$element, fileStack = self.getFileStack(), + name = $el.val() || (fileStack.length && fileStack[0].name) || '', label = self.slug(name), + n = self.isUploadable ? fileStack.length : numFiles, + nFiles = previewCache.count(self.id) + n, + log = n > 1 ? self.getMsgSelected(nFiles) : label; + if (self.isError) { + self.$previewContainer.removeClass('loading'); + self.$previewStatus.html(''); + self.$captionContainer.find('.kv-caption-icon').hide(); + } else { + self.showFileIcon(); + } + self.setCaption(log, self.isError); + self.$container.removeClass('file-input-new file-input-ajax-new'); + if (arguments.length === 1) { + self.raise('fileselect', [numFiles, label]); + } + if (previewCache.count(self.id)) { + self.initPreviewDeletes(); + } + }, + change: function (e) { + var self = this, $el = self.$element; + if (!self.isUploadable && isEmpty($el.val()) && self.fileInputCleared) { // IE 11 fix + self.fileInputCleared = false; + return; + } + self.fileInputCleared = false; + var tfiles, msg, total, $preview = self.$preview, isDragDrop = arguments.length > 1, + files = isDragDrop ? e.originalEvent.dataTransfer.files : $el.get(0).files, + isSingleUpload = isEmpty($el.attr('multiple')), i = 0, f, n, folders = 0, + ctr = self.filestack.length, isAjaxUpload = self.isUploadable, len, + flagSingle = (isSingleUpload && ctr > 0), + throwError = function (mesg, file, previewId, index) { + var p1 = $.extend(self.getOutData({}, {}, files), {id: previewId, index: index}), + p2 = {id: previewId, index: index, file: file, files: files}; + return self.isUploadable ? self.showUploadError(mesg, p1) : self.showError(mesg, p2); + }; + self.reader = null; + self.resetUpload(); + self.hideFileIcon(); + if (self.isUploadable) { + self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove(); + } + if (isDragDrop) { + tfiles = []; + while (files[i]) { + f = files[i]; + if (!f.type && f.size % 4096 === 0) { + folders++; + } else { + tfiles.push(f); + } + i++; + } + } else { + if (e.target.files === undefined) { + tfiles = e.target && e.target.value ? [ + {name: e.target.value.replace(/^.+\\/, '')} + ] : []; + } else { + tfiles = e.target.files; + } + } + if (isEmpty(tfiles) || tfiles.length === 0) { + if (!isAjaxUpload) { + self.clear(); + } + self.showFolderError(folders); + self.raise('fileselectnone'); + return; + } + self.resetErrors(); + len = tfiles.length; + total = self.isUploadable ? self.getFileStack().length + len : len; + if (self.maxFileCount > 0 && total > self.maxFileCount) { + if (!self.autoReplace || len > self.maxFileCount) { + n = (self.autoReplace && len > self.maxFileCount) ? len : total; + msg = self.msgFilesTooMany.replace('{m}', self.maxFileCount).replace('{n}', n); + self.isError = throwError(msg, null, null, null); + self.$captionContainer.find('.kv-caption-icon').hide(); + self.setCaption('', true); + self.setEllipsis(); + self.$container.removeClass('file-input-new file-input-ajax-new'); + return; + } + if (total > self.maxFileCount) { + self.resetPreviewThumbs(isAjaxUpload); + } + } else { + if (!isAjaxUpload || flagSingle) { + self.resetPreviewThumbs(false); + if (flagSingle) { + self.filestack = []; + } + } else { + if (isAjaxUpload && ctr === 0 && (!previewCache.count(self.id) || self.overwriteInitial)) { + self.resetPreviewThumbs(true); + } + } + } + if (self.isPreviewable) { + self.readFiles(tfiles); + } else { + self.updateFileDetails(1); + } + self.showFolderError(folders); + }, + validateImage: function (i, previewId) { + var self = this, $preview = self.$preview, params, w1, w2, $cap, + $thumb = $preview.find("#" + previewId), fname = 'Untitled', + $img = $thumb.find('img'); + if (!$img.length) { + return; + } + handler($img, 'load', function () { + w1 = $thumb.width(); + w2 = $preview.width(); + if (w1 > w2) { + $img.css('width', '100%'); + $thumb.css('width', '97%'); + } + $cap = $img.closest('.file-preview-frame').find('.file-caption-name'); + if ($cap.length) { + $cap.width($img.width()); + fname = $cap.text(); + $cap.attr('title', fname); + } + params = {ind: i, id: previewId}; + self.checkDimensions(i, 'Small', $img, $thumb, fname, 'Width', params); + self.checkDimensions(i, 'Small', $img, $thumb, fname, 'Height', params); + self.checkDimensions(i, 'Large', $img, $thumb, fname, 'Width', params); + self.checkDimensions(i, 'Large', $img, $thumb, fname, 'Height', params); + self.raise('fileimageloaded', [previewId]); + objUrl.revokeObjectURL($img.attr('src')); + }); + }, + checkDimensions: function (i, cGS, $img, $thumb, fname, type, params) { + var self = this, msg, dim, tag = cGS === 'Small' ? 'min' : 'max', + limit = self[tag + 'Image' + type], $imgEl, isValid; + if (isEmpty(limit) || !$img.length) { + return; + } + $imgEl = $img[0]; + dim = (type === 'Width') ? $imgEl.naturalWidth || $imgEl.width : $imgEl.naturalHeight || $imgEl.height; + isValid = cGS === 'Small' ? dim >= limit : dim <= limit; + if (isValid) { + return; + } + msg = self['msgImage' + type + cGS].replace('{name}', fname).replace('{size}', limit); + self.showUploadError(msg, params); + self.setThumbStatus($thumb, 'Error'); + self.filestack[i] = null; + }, + initCaption: function () { + var self = this, cap = self.initialCaption || ''; + if (self.overwriteInitial || isEmpty(cap)) { + self.$caption.html(''); + return false; + } + self.setCaption(cap); + return true; + }, + setCaption: function (content, isError) { + var self = this, title, out; + if (isError) { + title = $('
      ' + self.msgValidationError + '
      ').text(); + out = '' + + self.msgValidationErrorIcon + title + ''; + } else { + if (isEmpty(content) || self.$caption.length === 0) { + return; + } + title = $('
      ' + content + '
      ').text(); + out = self.getLayoutTemplate('icon') + title; + } + self.$caption.html(out); + self.$caption.attr('title', title); + self.$captionContainer.find('.file-caption-ellipsis').attr('title', title); + self.setEllipsis(); + }, + initBrowse: function ($container) { + var self = this; + self.$btnFile = $container.find('.btn-file'); + self.$btnFile.append(self.$element); + }, + createContainer: function () { + var self = this, + $container = $(document.createElement("div")) + .attr({"class": 'file-input file-input-new'}) + .html(self.renderMain()); + self.$element.before($container); + self.initBrowse($container); + return $container; + }, + refreshContainer: function () { + var self = this, $container = self.$container; + $container.before(self.$element); + $container.html(self.renderMain()); + self.initBrowse($container); + }, + renderMain: function () { + var self = this, dropCss = (self.isUploadable && self.dropZoneEnabled) ? ' file-drop-zone' : '', + preview = self.showPreview ? self.getLayoutTemplate('preview').repl('{class}', self.previewClass) + .repl('{dropClass}', dropCss) : '', + css = self.isDisabled ? self.captionClass + ' file-caption-disabled' : self.captionClass, + caption = self.captionTemplate.repl('{class}', css + ' kv-fileinput-caption'); + return self.mainTemplate.repl('{class}', self.mainClass) + .repl('{preview}', preview) + .repl('{caption}', caption) + .repl('{upload}', self.renderUpload()) + .repl('{remove}', self.renderRemove()) + .repl('{cancel}', self.renderCancel()) + .repl('{browse}', self.renderBrowse()); + }, + renderBrowse: function () { + var self = this, css = self.browseClass + ' btn-file', status = ''; + if (self.isDisabled) { + status = ' disabled '; + } + return '
      ' + self.browseIcon + self.browseLabel + '
      '; + }, + renderRemove: function () { + var self = this, css = self.removeClass + ' fileinput-remove fileinput-remove-button', status = ''; + if (!self.showRemove) { + return ''; + } + if (self.isDisabled) { + status = ' disabled '; + } + return ''; + }, + renderCancel: function () { + var self = this, css = self.cancelClass + ' fileinput-cancel fileinput-cancel-button'; + if (!self.showCancel) { + return ''; + } + return ''; + }, + renderUpload: function () { + var self = this, css = self.uploadClass + ' kv-fileinput-upload fileinput-upload-button', content = '', status = ''; + if (!self.showUpload) { + return ''; + } + if (self.isDisabled) { + status = ' disabled '; + } + if (!self.isUploadable || self.isDisabled) { + content = ''; + } else { + content = '
      ' + self.uploadIcon + self.uploadLabel + ''; + } + return content; + } + }; + + //FileInput plugin definition + $.fn.fileinput = function (option) { + if (!hasFileAPISupport() && !isIE(9)) { + return; + } + + var args = Array.apply(null, arguments); + args.shift(); + return this.each(function () { + var $this = $(this), data = $this.data('fileinput'), defaults, + options = typeof option === 'object' && option, + lang = options.language || $this.data('language') || 'en'; + + if (!data) { + defaults = $.extend({}, $.fn.fileinput.defaults); + if (lang !== 'en' && !isEmpty($.fn.fileinputLocales[lang])) { + defaults = $.extend(defaults, $.fn.fileinputLocales[lang]); + } + data = new FileInput(this, $.extend(defaults, options, $this.data())); + $this.data('fileinput', data); + } + + if (typeof option === 'string') { + data[option].apply(data, args); + } + }); + }; + + $.fn.fileinput.defaults = { + language: 'en', + showCaption: true, + showPreview: true, + showRemove: true, + showUpload: true, + showCancel: true, + showUploadedThumbs: true, + autoReplace: false, + mainClass: '', + previewClass: '', + captionClass: '', + mainTemplate: null, + initialCaption: '', + initialPreview: [], + initialPreviewDelimiter: '*$$*', + initialPreviewConfig: [], + initialPreviewThumbTags: [], + previewThumbTags: {}, + initialPreviewShowDelete: true, + deleteUrl: '', + deleteExtraData: {}, + overwriteInitial: true, + layoutTemplates: defaultLayoutTemplates, + previewTemplates: defaultPreviewTemplates, + allowedPreviewTypes: defaultPreviewTypes, + allowedPreviewMimeTypes: null, + allowedFileTypes: null, + allowedFileExtensions: null, + customLayoutTags: {}, + customPreviewTags: {}, + previewSettings: defaultPreviewSettings, + fileTypeSettings: defaultFileTypeSettings, + previewFileIcon: '', + browseIcon: '  ', + browseClass: 'btn btn-primary', + removeIcon: ' ', + removeClass: 'btn btn-default', + cancelIcon: ' ', + cancelClass: 'btn btn-default', + uploadIcon: ' ', + uploadClass: 'btn btn-default', + uploadUrl: null, + uploadAsync: true, + uploadExtraData: {}, + minImageWidth: null, + minImageHeight: null, + maxImageWidth: null, + maxImageHeight: null, + maxFileSize: 0, + minFileCount: 0, + maxFileCount: 0, + msgValidationErrorClass: 'text-danger', + msgValidationErrorIcon: ' ', + msgErrorClass: 'file-error-message', + progressClass: "progress-bar progress-bar-success progress-bar-striped active", + progressCompleteClass: "progress-bar progress-bar-success", + previewFileType: 'image', + wrapTextLength: 250, + wrapIndicator: ' […]', + elCaptionContainer: null, + elCaptionText: null, + elPreviewContainer: null, + elPreviewImage: null, + elPreviewStatus: null, + elErrorContainer: null, + slugCallback: null, + dropZoneEnabled: true, + dropZoneTitleClass: 'file-drop-zone-title', + fileActionSettings: {}, + otherActionButtons: '', + textEncoding: 'UTF-8', + ajaxSettings: {}, + ajaxDeleteSettings: {}, + showAjaxErrorDetails: true + }; + + $.fn.fileinputLocales.en = { + fileSingle: 'file', + filePlural: 'files', + browseLabel: 'Browse …', + removeLabel: 'Remove', + removeTitle: 'Clear selected files', + cancelLabel: 'Cancel', + cancelTitle: 'Abort ongoing upload', + uploadLabel: 'Upload', + uploadTitle: 'Upload selected files', + msgSizeTooLarge: 'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB. Please retry your upload!', + msgFilesTooLess: 'You must select at least {n} {files} to upload. Please retry your upload!', + msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}. Please retry your upload!', + msgFileNotFound: 'File "{name}" not found!', + msgFileSecured: 'Security restrictions prevent reading the file "{name}".', + msgFileNotReadable: 'File "{name}" is not readable.', + msgFilePreviewAborted: 'File preview aborted for "{name}".', + msgFilePreviewError: 'An error occurred while reading the file "{name}".', + msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.', + msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.', + msgValidationError: 'File Upload Error', + msgLoading: 'Loading file {index} of {files} …', + msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.', + msgSelected: '{n} {files} selected', + msgFoldersNotAllowed: 'Drag & drop files only! {n} folder(s) dropped were skipped.', + msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.', + msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.', + msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.', + msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.', + dropZoneTitle: 'Drag & drop files here …' + }; + + $.extend($.fn.fileinput.defaults, $.fn.fileinputLocales.en); + + $.fn.fileinput.Constructor = FileInput; + + /** + * Convert automatically file inputs with class 'file' + * into a bootstrap fileinput control. + */ + $(document).ready(function () { + var $input = $('input.file[type=file]'); + if ($input.length) { + $input.fileinput(); + } + }); +})(window.jQuery); \ No newline at end of file diff --git a/PHP-SourceCode/admin/js/jquery.dataTables.min.js b/PHP-SourceCode/admin/js/jquery.dataTables.min.js new file mode 100644 index 0000000..c7dfa87 --- /dev/null +++ b/PHP-SourceCode/admin/js/jquery.dataTables.min.js @@ -0,0 +1,166 @@ +/*! + DataTables 1.10.11 + ©2008-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(D){return h(D,window,document)}):"object"===typeof exports?module.exports=function(D,I){D||(D=window);I||(I="undefined"!==typeof window?require("jquery"):require("jquery")(D));return h(I,D,D.document)}:h(jQuery,window,document)})(function(h,D,I,k){function Y(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()), +d[c]=e,"o"===b[1]&&Y(a[e])});a._hungarianMap=d}function K(a,b,c){a._hungarianMap||Y(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),K(a[d],b[d],c)):b[d]=b[e]})}function Fa(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords"); +a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX= +a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("
      ").css({position:"absolute",top:1,left:1, +width:100,overflow:"scroll"}).append(h("
      ").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function hb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&& +(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:I.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f= +(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),K(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&& +(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed): +!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function U(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;cq[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;jb&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild); +c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=l.length;btr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH); +if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart= +-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j",{"class":e?d[0]:""}).append(h("",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];u(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,i]);u(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter; +c.bSort&&mb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("
      ").insertBefore(c),d=a.oFeatures,e=h("
      ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,t=0;t")[0]; +n=f[t+1];if("'"==n||'"'==n){l="";for(q=2;f[t+q]!=n;)l+=f[t+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;t+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==j&&d.bFilter)g=pb(a);else if("r"==j&&d.bProcessing)g=qb(a);else if("t"==j)g=rb(a);else if("i"==j&&d.bInfo)g=sb(a);else if("p"== +j&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("
      ",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("
      ").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());O(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)}, +b=h("
      ").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;lf&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display", +b?"block":"none");u(a,null,"processing",[a,b])}function rb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("
      ",{"class":f.sScrollWrapper}).append(h("
      ",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:x(d):"100%"}).append(h("
      ", +{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
      ",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:x(d)}).append(b));l&&i.append(h("
      ",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:x(d):"100%"}).append(h("
      ",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", +0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"), +j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),G=h(a.nTable),p=G[0],r=p.style,u=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,Ua=Eb.bScrollOversize,s=F(a.aoColumns,"nTh"),P,v,w,y,z=[],A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};v=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==v&&a.scrollBarVis!==k)a.scrollBarVis=v,U(a);else{a.scrollBarVis=v;G.children("thead, tfoot").remove(); +u&&(w=u.clone().prependTo(G),P=u.find("tr"),w=w.find("tr"));y=o.clone().prependTo(G);o=o.find("tr");v=y.find("tr");y.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(qa(a,y),function(b,c){D=Z(a,b);c.style.width=a.aoColumns[D].sWidth});u&&J(function(a){a.style.width=""},w);f=G.outerWidth();if(""===c){r.width="100%";if(Ua&&(G.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(G.outerWidth()-b);f=G.outerWidth()}else""!==d&&(r.width= +x(d),f=G.outerWidth());J(E,v);J(function(a){B.push(a.innerHTML);z.push(x(h(a).css("width")))},v);J(function(a,b){if(h.inArray(a,s)!==-1)a.style.width=z[b]},o);h(v).height(0);u&&(J(E,w),J(function(a){C.push(a.innerHTML);A.push(x(h(a).css("width")))},w),J(function(a,b){a.style.width=A[b]},P),h(w).height(0));J(function(a,b){a.innerHTML='
      '+B[b]+"
      ";a.style.width=z[b]},v);u&&J(function(a,b){a.innerHTML='
      '+ +C[b]+"
      ";a.style.width=A[b]},w);if(G.outerWidth()j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(Ua&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(P-b);(""===c||""!==d)&&L(a,1,"Possible column misalignment",6)}else P="100%";q.width=x(P);g.width=x(P);u&&(a.nScrollFoot.style.width=x(P));!e&&Ua&&(q.height=x(p.offsetHeight+b));c=G.outerWidth();n[0].style.width=x(c);i.width=x(c);d=G.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+ +(Eb.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=x(c),t[0].style.width=x(c),t[0].style[e]=d?b+"px":"0px");G.children("colgroup").insertBefore(G.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function J(a,b,c){for(var d=0,e=0,f=b.length,g,j;e").appendTo(j.find("tbody")); +j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=qa(a,j.find("thead")[0]);for(m=0;m").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()").css("width",x(a)).appendTo(b||I.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d= +a.aoData[c];return!d.nTr?h("").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;fd&&(d=c.length,e=f);return e}function x(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function W(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n, +a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ae?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return ce?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;jg?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=W(a),a=a.oLanguage.oAria,f=0,g=d.length;f/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0e?e+1:3));e=0;for(f=d.length;ee?e+1:3))}a.aLastSort=d}function Ib(a, +b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j=d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide? +"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=X(0,b):a<=d?(c=X(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=X(b-(c-2),b):(c=X(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Xa)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Xa)}},function(b, +c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,v,r,p,s,Ya={},Ob=/[\r\n]/g,Ca=/<.*?>/g,bc=/^[\w\+\-]/,cc=/[\w\+\-]$/,Zb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1}, +Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:Za(a.replace(Ca,""),b,c)?!0:null},F=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e< +f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e")[0],$b=wa.textContent!==k,ac=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new r(za(this[v.iApiIndex])):new r(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()}; +this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)}; +this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition= +function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()}; +this.fnSettings=function(){return za(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=v.internal;for(var e in m.ext.internal)e&&(this[e]= +Nb(e));this.each(function(){var e={},e=1t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(i,m.ext.classes,e.oClasses);q.addClass(i.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=e.iDisplayStart,o._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(o.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),o._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,o._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var r=o.oLanguage;h.extend(!0, +r,e.oLanguage);""!==r.sUrl&&(h.ajax({dataType:"json",url:r.sUrl,success:function(a){Fa(a);K(l.oLanguage,a);h.extend(true,r,a);ga(o)},error:function(){ga(o)}}),n=!0);null===e.asStripeClasses&&(o.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=o.asStripeClasses,v=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return v.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),o.asDestroyStripes=g.slice());t=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(o.aoHeader, +g[0]),t=qa(o));if(null===e.aoColumns){p=[];g=0;for(j=t.length;g").appendTo(this));o.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("").appendTo(this));o.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):0a?new r(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Vb(this, +!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ec=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(ec):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null}); +return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column", +function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b, +c,d,e,f){return ha(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ha(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,d){if(a===k)return c.aoColumns[d].bVisible;var e=c.aoColumns,f=e[d],g=c.aoData,j,i,n;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,F(e,"bVisible"),d+1);j=0;for(i=g.length;j< +i;j++)n=g[j].nTr,e=g[j].anCells,n&&n.insertBefore(e[d],e[l]||null)}else h(F(c.aoData,"anCells",d)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);(b===k||b)&&U(c);u(c,null,"column-visibility",[c,d,a,b]);ya(c)}})});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){U(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c= +this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});p("column()",function(a,b){return bb(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Da(b,e),j=Sb(ha(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,p,r,u,v,s;return $a("cell",d,function(a){var c= +typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(r=g.length;pd;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a|| +a&&h(b.nTable).is(":visible"))return b.nTable});return b?new r(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=K;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table", +function(a){na(a)})});p("settings()",function(){return new r(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return F(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}), +p;b.bDestroying=!0;u(b,"aoDestroyCallback","destroy",[b]);a||(new r(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(D).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+ +d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column", +"row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.11";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null, +_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults= +{aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ +"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; +Y(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};Y(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, +bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[], +aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null, +aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a= +this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{}, +header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", +sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", +sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",H=Ea+"ui-state-default",ia=Ea+"css_right ui-icon ui-icon-",Xb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses, +m.ext.classes,{sPageButton:"fg-button ui-button "+H,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:H+" sorting_asc",sSortDesc:H+" sorting_desc",sSortable:H+" sorting",sSortableAsc:H+" sorting_asc_disabled",sSortableDesc:H+" sorting_desc_disabled",sSortableNone:H+" sorting_disabled",sSortJUIAsc:ia+"triangle-1-n",sSortJUIDesc:ia+"triangle-1-s",sSortJUI:ia+"carat-2-n-s", +sSortJUIAscAllowed:ia+"carat-1-n",sSortJUIDescAllowed:ia+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+H,sScrollFoot:"dataTables_scrollFoot "+H,sHeaderTH:H,sFooterTH:H,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a, +b)]},simple_numbers:function(a,b){return["previous",Aa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},k,l,m=0,p=function(b,d){var o,r,u,s,v=function(b){Ta(a,b.data.action,true)};o=0;for(r=d.length;o").appendTo(b);p(u,s)}else{k=null; +l="";switch(s){case "ellipsis":b.append('');break;case "first":k=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":k=j.sPrevious;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":k=j.sNext;l=s+(e",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s], +"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(k).appendTo(b);Wa(u,{action:s},v);m++}}}},r;try{r=h(b).find(I.activeElement).data("dt-idx")}catch(o){}p(h(b).empty(),d);r&&h(b).find("[data-dt-idx="+r+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!bc.test(a)||!cc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date": +null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob, +" "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, +b){return ab?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("
      ").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e, +f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Yb=function(a){return"string"===typeof a?a.replace(//g,">").replace(/"/g,"""):a};m.render={number:function(a, +b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Yb(f);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Yb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:ja, +_fnAdjustColumnSizing:U,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Ia,_fnApplyColumnDefs:ib,_fnHungarianMap:Y,_fnCamelToHungarian:K,_fnLanguageCompat:Fa,_fnBrowserDetect:gb,_fnAddData:N,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:jb,_fnSplitObjNotation:La,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R, +_fnGetDataMaster:Ma,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:kb,_fnDrawHead:ea,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:nb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:fa,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,_fnInfoMacros:Db,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob, +_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:ka,_fnApplyToChildren:J,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:x,_fnSortFlatten:W,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Va,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:L,_fnMap:E,_fnBindAction:Wa,_fnCallbackReg:z, +_fnCallbackFire:u,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); diff --git a/PHP-SourceCode/admin/js/jquery.min.js b/PHP-SourceCode/admin/js/jquery.min.js new file mode 100644 index 0000000..2f53572 --- /dev/null +++ b/PHP-SourceCode/admin/js/jquery.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(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.2",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=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):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=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(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 kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(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 ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(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.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
      ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(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=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(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=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(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=K.test(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},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 pt(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?pt(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:lt,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=mt(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())?lt(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:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(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:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(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:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(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 yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(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 bt(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 xt(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 wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(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=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(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=[vt(bt(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 wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(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=xt(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?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(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&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),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!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],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;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):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 t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}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){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){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,order:!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(" + + + + + + + + + + + + +
      + + + + + +
      +
      +
      + + +
      +
      + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      + + + +
      + +
      +
      5% Off
      +
      +
      +
        + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + + +
      • +
        +
        + + + + + +
        + +
        + + +
      • + + +
      +
      +
      +
      +
      +
      + + +
      +
      +

      Sudarsana Tablets 100 Nos

      +

      Reduces High Temperature & Relieves Chills

      +
      +
      + + + + + + + + + + + + +
      +

      0 rating and 0 reviews

      +
      + +
      +

      ₹361.00

      +

      ₹380.00

      + +  (Inclusive of all taxes) +
      + +
      + +

      Mfr: Kerala Ayurveda Ltd. Athani Post, Aluva Ernakulam District, Kerala-683585

      +

      Country of Orgin: India

      +
      +
      +
      + +
      +
      +
      +
      + +
      + +
      +
      +
      + + + + + +
      + +
      +
      + + +
      + + + + +
      + +
      +
      + +

      100% replacement guaranteed returns within 30 days

      +
      + +
      + +

      Flat shipping rates across India

      +
      +
      + +

      Secure Payment

      +
      +
      + +

      Cash on Delivery is available

      +
      + +
      +
      + + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      X
      + +
      +
      + +
      +
      +
      + +
      +
      +

      Customer Reviews

      + + + + + + + + + + + 0 rating and 0 reviews +
      +
      + +
      + +
      + +
      + +

      no reviews yet...

      +
      +
      +
      +
      +
      +
      +
      + + + + +
      + +
      + + + + + + +
      +
      +
      +
      +
      +
      +

      As a natural response to bacterial or viral infection, your immune system increases your body’s temperature, which usually subsides in a day or two. That’s your body’s mechanism to destroy the bacteria and viruses that attack it. However, when your body is not functioning at its best, the fever may last longer than it should and make you a bit uncomfortable, weak, sleepy and hot as an oven.

      + +

      Fortunately, Ayurveda has the answer to this problem.

      + +

      Sudarsana tablet has antipyretic and analgesic properties, making it the best tablet for fever and body pain .The common fever is often accompanied by other symptoms like cough and cold, for which, Sudarsana tablets have been proven effective. These tablets also happen to treat breathlessness and epigastric distress. And since it's an all-natural, chemical-free herbal formulation, it is safe to use whenever you need to. However, if the fever doesn’t go away in 3-4 days despite taking the tablets, consider consulting a physician.

      +
      +
      +


      +
      + +
      + +
      +
      +
      +
      +
      +

      Let’s have a look at some of the prominent ingredients of sudarsana tablets.

      + +
        +
      • Chirata
      • +
      • +

        Amla

        +
      • +
      • +

        Giloy

        +
      • +
      • +

        TejpataA common herb used as a spice in Indian curries, Tejpatta is an important ingredient that goes into making sudarsana tablets. has Kapha-balancing properties that make it an effective remedy for cough, cold and nasal discharge.

        +
      • +
      • +

        NeemNeem is a godsend for humankind, and that’s not an understatement. Revered for its antimicrobial properties, Neem can help treat fever, cough and digestive disorders.

        +
      • +
      • Giloy-  It is one of the popular herbs in the Ayurveda tradition that is used to treat fever. Not only does it improve digestion but also treats asthma and liver disorders
      • +
      +
      +
      +


      + +
      +
      + +
      +
      +
      +
      +
      +

      If you are having a fever, a sudarsana tablet can be used as a tablet for fever . But if you are going to use it on a regular basis, consult an Ayurveda practitioner first. Every person responds differently to medicines and so they must be administered accordingly.

      + +

      Especially if you are pregnant or breastfeeding, you must not take these tablets without a prescription. If you are trying to lose weight and cut back on carbs, you should avoid using these tablets as they can stimulate your appetite.

      +
      +
      +


      +
      +
      + +
      +
      +
      + +
      +
      +
        +
      • The effective natural solution for fever and viral infections.
      • +
      • Natural antipyretic & anti- infective.
      • +
      • Help reduce symptoms associated with high fever, headache and body pain.
      • +
      • Helps improve appetite.
      • +
      • Useful in a general headache.
      • +
      +
      +
      +


      +
      +
      + +
      +
      +
      + +
      +
      +
        +
      • Helps relieve fever
      • +
      • Boosts appetite
      • +
      +
      +
      +


      + + +
      +
      +
      +
      +
      + + +
      + + + +
      +
      + + +
      + +
      + + +
      +
      +
      +

      Why Choose Us

      +
      +
      + 80+ years Heritage of Kerala Ayurveda Limited +

      80+ years Heritage

      +
      +
      + 100% Natural & Herbal Medicines - Kerala Ayurveda Limited +

      100% Natural & Herbal

      +
      +
      + Perfect blend of Classical & Modern - Kerala Ayurveda Limited +

      Perfect blend of Classical + Modern

      +
      +
      + Leaders of authentic Ayurveda - Kerala Ayurveda Limited +

      Leaders of authentic Ayurveda

      +
      +
      +
      +
      +
      +
      +
      +

      Our Blogs

      +
      + +
      + + General Health/Immunity +

      04 Sep, 2023

      +

      Yoga Nidra Meditation for Sleep - Benefits and How to do it

      + +

      Read Article

      +
      + +
      + + General Health/Immunity +

      31 Aug, 2023

      +

      Ayurvedic medicine for immunity and strength.

      + +

      Read Article

      +
      + +
      + + General Health/Immunity +

      29 Aug, 2023

      +

      Guide to Pitta Dosha | Symptoms, Home Remedies & Diet

      + +

      Read Article

      +
      + +
      + + General Health/Immunity +

      26 Aug, 2023

      +

      The Sweet and Surprising World of Licorice: Exploring its Benefits, Uses & More

      + +

      Read Article

      +
      + +
      + + +
      +
      +
      + +
      +
      + + General Health/Immunity +

      04 Sep, 2023

      +

      Yoga Nidra Meditation for Sleep - Benefits and How to do it

      + +

      Read Article

      +
      +
      + +
      +
      + + General Health/Immunity +

      31 Aug, 2023

      +

      Ayurvedic medicine for immunity and strength.

      + +

      Read Article

      +
      +
      + +
      +
      + + General Health/Immunity +

      29 Aug, 2023

      +

      Guide to Pitta Dosha | Symptoms, Home Remedies & Diet

      + +

      Read Article

      +
      +
      + +
      +
      + + General Health/Immunity +

      26 Aug, 2023

      +

      The Sweet and Surprising World of Licorice: Exploring its Benefits, Uses & More

      + +

      Read Article

      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231003071031000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231003071031000000.png new file mode 100644 index 0000000..d28ac41 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231003071031000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231003071040000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231003071040000000.png new file mode 100644 index 0000000..950d7b1 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231003071040000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231003071045000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231003071045000000.png new file mode 100644 index 0000000..c7334bd Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231003071045000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231004101050000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231004101050000000.png new file mode 100644 index 0000000..4d256f0 --- /dev/null +++ b/PHP-SourceCode/assets/images/ProductImage/category/20231004101050000000.png @@ -0,0 +1,398 @@ + + + + + + + +Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel: Buy tube of 30 gm Gel at best price in India | 1mg
      HomePersonal CareWomen Carevolini pain relief gel for muscle, joint & knee pain gel
      thumbnail
      thumbnail
      thumbnail
      thumbnail
      thumbnail
      thumbnail
      thumbnail
      thumbnail
      Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel

      Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel

      4.5
      4393 Ratings & 948 Reviews
      Product highlights
      • It may relieve pain
      • It may relieve pain in the joints
      • It can work great on sports injuries

      Combo offers for this product

      Additional discount
      Pack of 2
      combo
      224
      21% offMRP284
      Buy Pack
      Additional discount
      Pack of 3
      combo
      332
      22% offMRP426
      Buy Pack

      Combo offers for this product

      Additional discount
      combo
      Pack of 2
      22428421% off
      Buy Pack
      Additional discount
      combo
      Pack of 3
      33242622% off
      Buy Pack
      11414220% off
      114+ free shipping and 2% Extra NeuCoins with
      Care plan members get extra discounts, free shipping, rapid delivery, free premium doctor consultation and more.
      Inclusive of all taxes
      of30 gm Gel
      Add to cart
      Earliest delivery by Tomorrow
      Delivering to:
      110020, New Delhi

      Additional offers

      additional_offer_flag
      Paytm Wallet: Pay with Paytm Wallet on Tata 1mg for ₹999 or more and get cashback up to Rs. 500 with minimum cashback of Rs. 50. Offer ends 7th October 2023.
      Show more show_more

      Information about Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel

      Volini Pain Relief Gel
      Get quick relief from body pain with the Volini spray. The spray can offer quick relief from pain in the muscles and joints. It can work wonders on sprains. Volini may work on the muscles and bones by effectively penetrating and acting upon the problematic area. It is a scientifically produced formula that might work well on the knee, joint, shoulders, back, and neck pains. The tiny particles of the spray infiltrate the skin and stop the pain in the affected area. Volini is highly effective in the case of sports injuries as well, be it muscle pulls, slight strains, or even sprains.

      Key Ingredients:
      • Diclofenac Diethylamine Equivalent to Diclofenac Sodium 1% w/w
      • Methyl Salicylate IP
      • Menthol IP
      • Virgin Linseed Oil BP
      • Preservative
      • Benzyl Alcohol IP
      • Gel Base

      Key Benefits:
      • The spray can offer relief when in pain
      • It is effective for pain in the joints, knees, back, shoulders, and neck
      • It can work great on sports injuries such as muscle pulls, sprains, and strain
      • It provides instant and long-lasting pain relief from knee pain, joint pain, back pain, calf pain, and neck pain

      Directions For Use:
      • The Volini pain relief bottle should be shaken well before spraying
      • Hold the spray bottle at a 5cm distance from the affected area and spray
      • You can use the spray about three to four times daily or as recommened by your physician

      Safety Information:
      • Read the label carefully before use
      • Store in a cool and dry place, away from sunlight
      • Keep out of reach of children
      • The Volini pain relief spray is meant for external application only
      • Use Volini per the doctor’s guidance, and be careful not to use more than the given dosage
      • Do not use the spray on open wounds or surfaces of the skin that are ruptured
      • The spray should not be ingested or come in contact with the eyes and mucous membranes
      • Avoid using the spray near a naked flame
      • Do not burn or make a hole in the bottle even after the spray is over
      Ratings & Reviews
      4.5
      4393 Ratings & 948 Reviews
      5
      72%
      4
      20%
      3
      4%
      2
      1%
      1
      3%

      K R Pai
      5
      Verified Buyer
      17 December 2021
      Good for pain relief
      HELPFUL
      REPORT

      Kajal Shaw
      5
      Verified Buyer
      6 June 2022
      Best quality products
      HELPFUL
      REPORT

      Lakshmi Gosangi
      5
      Verified Buyer
      20 July 2022
      Best pain relief get in the world
      HELPFUL
      REPORT

      Smt Anima Das
      5
      Verified Buyer
      5 August 2022
      IT is very effective in healing pain.
      HELPFUL
      REPORT

      P R Ranganath
      3
      Verified Buyer
      30 July 2022
      The get is a temporary relief
      HELPFUL
      REPORT

      P.R.Venkatarama
      5
      Verified Buyer
      31 July 2022
      Very good for pain relief
      HELPFUL
      REPORT

      Qurram Khan
      5
      Verified Buyer
      2 August 2022
      Must have this product in every house
      HELPFUL
      REPORT

      R Parikh
      5
      Verified Buyer
      29 July 2022
      Very effective in relieving pain
      HELPFUL
      REPORT

      J D Gnaneshwara Rao
      5
      Verified Buyer
      29 July 2022
      A very useful get for pain relief
      HELPFUL
      REPORT

      Sunil Kumar Sinha
      5
      Verified Buyer
      30 July 2022
      Does the job well
      HELPFUL
      REPORT
      Show More

      Want to share the information?

      Country of origin: India
      Expires on or after: August, 2024

      A licensed vendor partner from your nearest location will deliver Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel. Once the pharmacy accepts your order, the details of the pharmacy will be shared with you.

      In case of any issues, contact us

      Email ID: care@1mg.com
      Address: 5th Floor Tower - B of the Presidency Building, 46/4 Mehrauli Gurgaon Road, Sector 14, Gurugram, Haryana-122001, India

      Frequently bought together

      Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel
      Volini Pain Relief Gel for Muscle, Joint & Knee Pain Gel
      Delivery by Tomorrow
      MRP ₹14220% off
      ₹114
      plus
      Folinext Tablet
      Folinext Tablet
      Delivery by Tomorrow
      MRP ₹9814% off
      ₹83.8

      Total for 2 items₹197.8
      Add both to cart
      Stressful life?
      Stay on top of your Health with our
      Preventive Health Packages
      • icon
        Authentic Products
      • icon
        Great Savings
      • icon
        Home Delivery
      Content Details
      Written By
      MMST, MBBS
      Reviewed By
      MD (Pharmacology), MBBS
      Last updated
      19 Sep 2023 | 12:01 AM (IST)

      We provide you with authentic, trustworthy and revelant information

      Want to know more

      Have issue with the content?

      Report Problem

      INDIA’S LARGEST HEALTHCARE PLATFORM

      260m+
      Visitors
      31m+
      Orders Delivered
      1800+
      Cities
      Get the link to download App
      Reliable

      All products displayed on Tata 1mg are procured from verified and licensed pharmacies. All labs listed on the platform are accredited

      Secure

      Tata 1mg uses Secure Sockets Layer (SSL) 128-bit encryption and is Payment Card Industry Data Security Standard (PCI DSS) compliant

      Affordable

      Find affordable medicine substitutes, save up to 50% on health products, up to 80% off on lab tests and free doctor consultations.

      LegitScript approved
      India's only LegitScript and ISO/ IEC 27001 certified online healthcare platform

      Know more about Tata 1mgdownArrow

      Access medical and health information

      Tata 1mg provides you with medical information which is curated, written and verified by experts, accurate and trustworthy. Our experts create high-quality content about medicines, diseases, lab investigations, Over-The-Counter (OTC) health products, Ayurvedic herbs/ingredients, and alternative remedies.

      Order medicines online

      Get free medicine home delivery in over 1800 cities across India. You can also order Ayurvedic, Homeopathic and other Over-The-Counter (OTC) health products. Your safety is our top priority. All products displayed on Tata 1mg are procured from verified and licensed pharmacies.

      Book lab tests

      Book any lab tests and preventive health packages from certified labs and get tested from the comfort of your home. Enjoy free home sample collection, view reports online and consult a doctor online for free.

      Consult a doctor online

      Got a health query? Consult doctors online from the comfort of your home for free. Chat privately with our registered medical specialists to connect directly with verified doctors. Your privacy is guaranteed.

      + + + +
      + + + \ No newline at end of file diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231203011209000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231203011209000000.png new file mode 100644 index 0000000..ac69350 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231203011209000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231203011222000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231203011222000000.png new file mode 100644 index 0000000..ac69350 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231203011222000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231203011226000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231203011226000000.png new file mode 100644 index 0000000..60f6b03 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231203011226000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231203011235000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231203011235000000.png new file mode 100644 index 0000000..60f6b03 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231203011235000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20231213101214000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20231213101214000000.png new file mode 100644 index 0000000..06d1a7a Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20231213101214000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240129060134000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240129060134000000.png new file mode 100644 index 0000000..ac71a9c Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240129060134000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240329030326000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240329030326000000.png new file mode 100644 index 0000000..dce1dfc Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240329030326000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240511010503000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240511010503000000.png new file mode 100644 index 0000000..18806bd Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240511010503000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240511010546000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240511010546000000.png new file mode 100644 index 0000000..db1ac90 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240511010546000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240511010551000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240511010551000000.png new file mode 100644 index 0000000..6f08d4a --- /dev/null +++ b/PHP-SourceCode/assets/images/ProductImage/category/20240511010551000000.png @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240511120505000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240511120505000000.png new file mode 100644 index 0000000..d4798b8 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240511120505000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/category/20240525120556000000.png b/PHP-SourceCode/assets/images/ProductImage/category/20240525120556000000.png new file mode 100644 index 0000000..af7640e Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/category/20240525120556000000.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001536870908029.png b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001536870908029.png new file mode 100644 index 0000000..1f15456 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001536870908029.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001729514807140.png b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001729514807140.png new file mode 100644 index 0000000..fba2d1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000001729514807140.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000003972741786846.png b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000003972741786846.png new file mode 100644 index 0000000..37c9f6c Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1087202204090604100000003972741786846.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000001649820346207.png b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000001649820346207.png new file mode 100644 index 0000000..fba2d1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000001649820346207.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008224307726261.png b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008224307726261.png new file mode 100644 index 0000000..37c9f6c Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008224307726261.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008254134923531.png b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008254134923531.png new file mode 100644 index 0000000..1f15456 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1088202204090604400000008254134923531.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000005330051840250.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000005330051840250.png new file mode 100644 index 0000000..fba2d1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000005330051840250.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007058226190189.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007058226190189.png new file mode 100644 index 0000000..1f15456 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007058226190189.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007129289384933.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007129289384933.png new file mode 100644 index 0000000..99b2bc2 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090704380000007129289384933.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000002173737516297.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000002173737516297.png new file mode 100644 index 0000000..1f15456 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000002173737516297.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000004586099478081.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000004586099478081.png new file mode 100644 index 0000000..fba2d1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000004586099478081.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000008762944082495.png b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000008762944082495.png new file mode 100644 index 0000000..99b2bc2 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1089202204090804470000008762944082495.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004312140372827.png b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004312140372827.png new file mode 100644 index 0000000..6cbcb40 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004312140372827.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004902397953135.png b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004902397953135.png new file mode 100644 index 0000000..c863cec Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000004902397953135.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000006860976347623.png b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000006860976347623.png new file mode 100644 index 0000000..bca9370 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1090202204090804190000006860976347623.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000002267515719446.png b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000002267515719446.png new file mode 100644 index 0000000..c863cec Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000002267515719446.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000003663505243806.png b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000003663505243806.png new file mode 100644 index 0000000..bca9370 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000003663505243806.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000006296181561097.png b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000006296181561097.png new file mode 100644 index 0000000..6cbcb40 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1091202204090804500000006296181561097.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712120000002501683444527.png b/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712120000002501683444527.png new file mode 100644 index 0000000..aa5bda7 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712120000002501683444527.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712180000007377625849454.png b/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712180000007377625849454.png new file mode 100644 index 0000000..6649971 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1091202212020712180000007377625849454.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000001533458649434.png b/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000001533458649434.png new file mode 100644 index 0000000..31d10e5 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000001533458649434.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000006852944373929.png b/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000006852944373929.png new file mode 100644 index 0000000..622dbd9 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1092202204100504300000006852944373929.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000001658104364330.png b/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000001658104364330.png new file mode 100644 index 0000000..5605336 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000001658104364330.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000007728867590573.png b/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000007728867590573.png new file mode 100644 index 0000000..e3fb2e1 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1093202204100504430000007728867590573.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002337563364347.png b/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002337563364347.png new file mode 100644 index 0000000..f89cc69 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002337563364347.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002804828647656.png b/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002804828647656.png new file mode 100644 index 0000000..0e2d6df Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1094202204100504480000002804828647656.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004497315732853.png b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004497315732853.png new file mode 100644 index 0000000..cf0be86 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004497315732853.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004568473482871.png b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004568473482871.png new file mode 100644 index 0000000..b2411cc Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000004568473482871.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000005418351701052.png b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000005418351701052.png new file mode 100644 index 0000000..2883856 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000005418351701052.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000008132662579471.png b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000008132662579471.png new file mode 100644 index 0000000..3ff52e1 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1095202204110704090000008132662579471.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000001306371525279.png b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000001306371525279.png new file mode 100644 index 0000000..ccc9d34 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000001306371525279.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000006690478268631.png b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000006690478268631.png new file mode 100644 index 0000000..0f05ff7 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000006690478268631.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000008186786940267.png b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000008186786940267.png new file mode 100644 index 0000000..caafe06 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1096202204110704020000008186786940267.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000001468033366931.png b/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000001468033366931.png new file mode 100644 index 0000000..6218726 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000001468033366931.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000002488438080089.png b/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000002488438080089.png new file mode 100644 index 0000000..d3c7b39 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1097202204110704090000002488438080089.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/109720220411070409000000864177797664.png b/PHP-SourceCode/assets/images/ProductImage/product/109720220411070409000000864177797664.png new file mode 100644 index 0000000..9cc11f6 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/109720220411070409000000864177797664.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1098202305070305060000006253356968603.png b/PHP-SourceCode/assets/images/ProductImage/product/1098202305070305060000006253356968603.png new file mode 100644 index 0000000..d10b7b4 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1098202305070305060000006253356968603.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000002975557526373.png b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000002975557526373.png new file mode 100644 index 0000000..6f0eb98 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000002975557526373.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000003258372134103.png b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000003258372134103.png new file mode 100644 index 0000000..f5fe349 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000003258372134103.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000006730415476924.png b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000006730415476924.png new file mode 100644 index 0000000..dd560b6 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1099202211300411060000006730415476924.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000005555828347373.png b/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000005555828347373.png new file mode 100644 index 0000000..9520489 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000005555828347373.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000007569869033534.png b/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000007569869033534.png new file mode 100644 index 0000000..f802b48 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1099202305070305360000007569869033534.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1100202212191112160000006545575459298.png b/PHP-SourceCode/assets/images/ProductImage/product/1100202212191112160000006545575459298.png new file mode 100644 index 0000000..7eb03b4 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1100202212191112160000006545575459298.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000005609255812229.png b/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000005609255812229.png new file mode 100644 index 0000000..51818aa Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000005609255812229.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000006839731367416.png b/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000006839731367416.png new file mode 100644 index 0000000..34cc54f Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1100202305070305080000006839731367416.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801190000006918025648034.png b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801190000006918025648034.png new file mode 100644 index 0000000..ea72902 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801190000006918025648034.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801250000006194734384335.png b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801250000006194734384335.png new file mode 100644 index 0000000..ea72902 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801250000006194734384335.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801510000007544619434094.png b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801510000007544619434094.png new file mode 100644 index 0000000..076e28b Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1101202301050801510000007544619434094.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000004283364309661.png b/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000004283364309661.png new file mode 100644 index 0000000..581a900 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000004283364309661.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000005329339420708.png b/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000005329339420708.png new file mode 100644 index 0000000..ee06afd Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1101202305070305280000005329339420708.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1102202301080201000000002633088098373.png b/PHP-SourceCode/assets/images/ProductImage/product/1102202301080201000000002633088098373.png new file mode 100644 index 0000000..8706046 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1102202301080201000000002633088098373.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1102202306140906070000004330734242710.png b/PHP-SourceCode/assets/images/ProductImage/product/1102202306140906070000004330734242710.png new file mode 100644 index 0000000..d9886f0 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1102202306140906070000004330734242710.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1103202306150406500000006510820649650.png b/PHP-SourceCode/assets/images/ProductImage/product/1103202306150406500000006510820649650.png new file mode 100644 index 0000000..571558e Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1103202306150406500000006510820649650.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1104202306150506560000009277614958563.png b/PHP-SourceCode/assets/images/ProductImage/product/1104202306150506560000009277614958563.png new file mode 100644 index 0000000..acff7ec Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1104202306150506560000009277614958563.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1105202306150506400000003246621312891.png b/PHP-SourceCode/assets/images/ProductImage/product/1105202306150506400000003246621312891.png new file mode 100644 index 0000000..5281378 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1105202306150506400000003246621312891.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1106202306150506090000009230866994688.png b/PHP-SourceCode/assets/images/ProductImage/product/1106202306150506090000009230866994688.png new file mode 100644 index 0000000..d1032e6 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1106202306150506090000009230866994688.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1107202306150506330000008981108770786.png b/PHP-SourceCode/assets/images/ProductImage/product/1107202306150506330000008981108770786.png new file mode 100644 index 0000000..eeee246 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1107202306150506330000008981108770786.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1108202306150506160000008568751680468.png b/PHP-SourceCode/assets/images/ProductImage/product/1108202306150506160000008568751680468.png new file mode 100644 index 0000000..063efc7 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1108202306150506160000008568751680468.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1109202306150506250000004541471539337.png b/PHP-SourceCode/assets/images/ProductImage/product/1109202306150506250000004541471539337.png new file mode 100644 index 0000000..5552a8b Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1109202306150506250000004541471539337.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1110202306150506210000001346327318635.png b/PHP-SourceCode/assets/images/ProductImage/product/1110202306150506210000001346327318635.png new file mode 100644 index 0000000..53b8c45 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1110202306150506210000001346327318635.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1111202306150506140000004018810884736.png b/PHP-SourceCode/assets/images/ProductImage/product/1111202306150506140000004018810884736.png new file mode 100644 index 0000000..0f57c4d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1111202306150506140000004018810884736.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1112202307210307100000005940776745821.png b/PHP-SourceCode/assets/images/ProductImage/product/1112202307210307100000005940776745821.png new file mode 100644 index 0000000..13804b2 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1112202307210307100000005940776745821.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1113202309050209390000003503752400857.png b/PHP-SourceCode/assets/images/ProductImage/product/1113202309050209390000003503752400857.png new file mode 100644 index 0000000..05251f5 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1113202309050209390000003503752400857.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/111320231002061028000000282997146957.png b/PHP-SourceCode/assets/images/ProductImage/product/111320231002061028000000282997146957.png new file mode 100644 index 0000000..fe6c24e Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/111320231002061028000000282997146957.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310100000007979062331095.png b/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310100000007979062331095.png new file mode 100644 index 0000000..f34f4a6 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310100000007979062331095.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310190000007790646671973.png b/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310190000007790646671973.png new file mode 100644 index 0000000..3917463 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1113202310210310190000007790646671973.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1114202309050209190000006724447332973.png b/PHP-SourceCode/assets/images/ProductImage/product/1114202309050209190000006724447332973.png new file mode 100644 index 0000000..988e1a0 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1114202309050209190000006724447332973.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1114202310020710130000002843927228869.png b/PHP-SourceCode/assets/images/ProductImage/product/1114202310020710130000002843927228869.png new file mode 100644 index 0000000..456cb6a Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1114202310020710130000002843927228869.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1115202310020710120000006932363285764.png b/PHP-SourceCode/assets/images/ProductImage/product/1115202310020710120000006932363285764.png new file mode 100644 index 0000000..61dcb1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1115202310020710120000006932363285764.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1116202310020710380000002695860505308.png b/PHP-SourceCode/assets/images/ProductImage/product/1116202310020710380000002695860505308.png new file mode 100644 index 0000000..61dcb1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1116202310020710380000002695860505308.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1116202310030610320000001059662449405.png b/PHP-SourceCode/assets/images/ProductImage/product/1116202310030610320000001059662449405.png new file mode 100644 index 0000000..45732fe Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1116202310030610320000001059662449405.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/11172023100207104500000094299025404.png b/PHP-SourceCode/assets/images/ProductImage/product/11172023100207104500000094299025404.png new file mode 100644 index 0000000..61dcb1d Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/11172023100207104500000094299025404.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1117202310030610060000009478988151632.png b/PHP-SourceCode/assets/images/ProductImage/product/1117202310030610060000009478988151632.png new file mode 100644 index 0000000..0ebe6bf Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1117202310030610060000009478988151632.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1118202310030710310000007720942443669.png b/PHP-SourceCode/assets/images/ProductImage/product/1118202310030710310000007720942443669.png new file mode 100644 index 0000000..7a53b25 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1118202310030710310000007720942443669.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1119202310030710550000007279436946902.png b/PHP-SourceCode/assets/images/ProductImage/product/1119202310030710550000007279436946902.png new file mode 100644 index 0000000..3ea4e80 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1119202310030710550000007279436946902.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1120202310030710080000004988917472166.png b/PHP-SourceCode/assets/images/ProductImage/product/1120202310030710080000004988917472166.png new file mode 100644 index 0000000..5bc9180 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1120202310030710080000004988917472166.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1121202310030710080000003321879525608.png b/PHP-SourceCode/assets/images/ProductImage/product/1121202310030710080000003321879525608.png new file mode 100644 index 0000000..1ba9ece Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1121202310030710080000003321879525608.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1122202310030710170000008908230421608.png b/PHP-SourceCode/assets/images/ProductImage/product/1122202310030710170000008908230421608.png new file mode 100644 index 0000000..abdd778 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1122202310030710170000008908230421608.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1122202310060310410000001077413203729.png b/PHP-SourceCode/assets/images/ProductImage/product/1122202310060310410000001077413203729.png new file mode 100644 index 0000000..1d18cde Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1122202310060310410000001077413203729.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1122202310210310460000008469055993541.png b/PHP-SourceCode/assets/images/ProductImage/product/1122202310210310460000008469055993541.png new file mode 100644 index 0000000..2bde68e Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1122202310210310460000008469055993541.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1123202310030710200000001868886769636.png b/PHP-SourceCode/assets/images/ProductImage/product/1123202310030710200000001868886769636.png new file mode 100644 index 0000000..950d7b1 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1123202310030710200000001868886769636.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1124202310041010280000002895756928248.png b/PHP-SourceCode/assets/images/ProductImage/product/1124202310041010280000002895756928248.png new file mode 100644 index 0000000..8c03b86 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1124202310041010280000002895756928248.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1125202310041010230000007283081531290.png b/PHP-SourceCode/assets/images/ProductImage/product/1125202310041010230000007283081531290.png new file mode 100644 index 0000000..4bf0c39 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1125202310041010230000007283081531290.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1126202310060310420000003601344630541.png b/PHP-SourceCode/assets/images/ProductImage/product/1126202310060310420000003601344630541.png new file mode 100644 index 0000000..02e1570 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1126202310060310420000003601344630541.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1127202312030112150000003082363977460.png b/PHP-SourceCode/assets/images/ProductImage/product/1127202312030112150000003082363977460.png new file mode 100644 index 0000000..7c50497 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1127202312030112150000003082363977460.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/1128202312030112550000007595802077857.png b/PHP-SourceCode/assets/images/ProductImage/product/1128202312030112550000007595802077857.png new file mode 100644 index 0000000..f071c02 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/1128202312030112550000007595802077857.png differ diff --git a/PHP-SourceCode/assets/images/ProductImage/product/113120240406060445000000623065852999.png b/PHP-SourceCode/assets/images/ProductImage/product/113120240406060445000000623065852999.png new file mode 100644 index 0000000..601f3c3 Binary files /dev/null and b/PHP-SourceCode/assets/images/ProductImage/product/113120240406060445000000623065852999.png differ diff --git a/PHP-SourceCode/assets/images/about-img1.jpg b/PHP-SourceCode/assets/images/about-img1.jpg new file mode 100644 index 0000000..2a88116 Binary files /dev/null and b/PHP-SourceCode/assets/images/about-img1.jpg differ diff --git a/PHP-SourceCode/assets/images/about-img2.jpg b/PHP-SourceCode/assets/images/about-img2.jpg new file mode 100644 index 0000000..dc8946f Binary files /dev/null and b/PHP-SourceCode/assets/images/about-img2.jpg differ diff --git a/PHP-SourceCode/assets/images/about-img3.jpg b/PHP-SourceCode/assets/images/about-img3.jpg new file mode 100644 index 0000000..d09f2e0 Binary files /dev/null and b/PHP-SourceCode/assets/images/about-img3.jpg differ diff --git a/PHP-SourceCode/assets/images/about-img4.jpg b/PHP-SourceCode/assets/images/about-img4.jpg new file mode 100644 index 0000000..53f9e77 Binary files /dev/null and b/PHP-SourceCode/assets/images/about-img4.jpg differ diff --git a/PHP-SourceCode/assets/images/blog-img1.jpg b/PHP-SourceCode/assets/images/blog-img1.jpg new file mode 100644 index 0000000..b869c66 Binary files /dev/null and b/PHP-SourceCode/assets/images/blog-img1.jpg differ diff --git a/PHP-SourceCode/assets/images/blog-img2.jpg b/PHP-SourceCode/assets/images/blog-img2.jpg new file mode 100644 index 0000000..18dd0fb Binary files /dev/null and b/PHP-SourceCode/assets/images/blog-img2.jpg differ diff --git a/PHP-SourceCode/assets/images/blog-img3.jpg b/PHP-SourceCode/assets/images/blog-img3.jpg new file mode 100644 index 0000000..abfd4c9 Binary files /dev/null and b/PHP-SourceCode/assets/images/blog-img3.jpg differ diff --git a/PHP-SourceCode/assets/images/client-avatar1.jpg b/PHP-SourceCode/assets/images/client-avatar1.jpg new file mode 100644 index 0000000..e847d10 Binary files /dev/null and b/PHP-SourceCode/assets/images/client-avatar1.jpg differ diff --git a/PHP-SourceCode/assets/images/client-avatar2.jpg b/PHP-SourceCode/assets/images/client-avatar2.jpg new file mode 100644 index 0000000..81344b4 Binary files /dev/null and b/PHP-SourceCode/assets/images/client-avatar2.jpg differ diff --git a/PHP-SourceCode/assets/images/client-avatar3.jpg b/PHP-SourceCode/assets/images/client-avatar3.jpg new file mode 100644 index 0000000..618f257 Binary files /dev/null and b/PHP-SourceCode/assets/images/client-avatar3.jpg differ diff --git a/PHP-SourceCode/assets/images/department-img1.jpg b/PHP-SourceCode/assets/images/department-img1.jpg new file mode 100644 index 0000000..bb1c08f Binary files /dev/null and b/PHP-SourceCode/assets/images/department-img1.jpg differ diff --git a/PHP-SourceCode/assets/images/doctor-img1.png b/PHP-SourceCode/assets/images/doctor-img1.png new file mode 100644 index 0000000..d2e8a40 Binary files /dev/null and b/PHP-SourceCode/assets/images/doctor-img1.png differ diff --git a/PHP-SourceCode/assets/images/doctor-img2.png b/PHP-SourceCode/assets/images/doctor-img2.png new file mode 100644 index 0000000..f9ea9b6 Binary files /dev/null and b/PHP-SourceCode/assets/images/doctor-img2.png differ diff --git a/PHP-SourceCode/assets/images/doctor-img3.png b/PHP-SourceCode/assets/images/doctor-img3.png new file mode 100644 index 0000000..26f8c74 Binary files /dev/null and b/PHP-SourceCode/assets/images/doctor-img3.png differ diff --git a/PHP-SourceCode/assets/images/doctor-img4.png b/PHP-SourceCode/assets/images/doctor-img4.png new file mode 100644 index 0000000..a0e8198 Binary files /dev/null and b/PHP-SourceCode/assets/images/doctor-img4.png differ diff --git a/PHP-SourceCode/assets/images/fun-facts-bg.jpg b/PHP-SourceCode/assets/images/fun-facts-bg.jpg new file mode 100644 index 0000000..45b881a Binary files /dev/null and b/PHP-SourceCode/assets/images/fun-facts-bg.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img1.jpg b/PHP-SourceCode/assets/images/gallery-img1.jpg new file mode 100644 index 0000000..7cf4ae4 Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img1.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img2.jpg b/PHP-SourceCode/assets/images/gallery-img2.jpg new file mode 100644 index 0000000..a9bc5d7 Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img2.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img3.jpg b/PHP-SourceCode/assets/images/gallery-img3.jpg new file mode 100644 index 0000000..8a9c223 Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img3.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img4.jpg b/PHP-SourceCode/assets/images/gallery-img4.jpg new file mode 100644 index 0000000..d99cea2 Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img4.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img5.jpg b/PHP-SourceCode/assets/images/gallery-img5.jpg new file mode 100644 index 0000000..2f1c680 Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img5.jpg differ diff --git a/PHP-SourceCode/assets/images/gallery-img6.jpg b/PHP-SourceCode/assets/images/gallery-img6.jpg new file mode 100644 index 0000000..d7dc19f Binary files /dev/null and b/PHP-SourceCode/assets/images/gallery-img6.jpg differ diff --git a/PHP-SourceCode/assets/images/hero-man.png b/PHP-SourceCode/assets/images/hero-man.png new file mode 100644 index 0000000..9de6dae Binary files /dev/null and b/PHP-SourceCode/assets/images/hero-man.png differ diff --git a/PHP-SourceCode/assets/images/logo.png b/PHP-SourceCode/assets/images/logo.png new file mode 100644 index 0000000..3b6d356 Binary files /dev/null and b/PHP-SourceCode/assets/images/logo.png differ diff --git a/PHP-SourceCode/assets/images/pattern.png b/PHP-SourceCode/assets/images/pattern.png new file mode 100644 index 0000000..417bcee Binary files /dev/null and b/PHP-SourceCode/assets/images/pattern.png differ diff --git a/PHP-SourceCode/assets/images/upload/bills/324/20220416030426000000.png b/PHP-SourceCode/assets/images/upload/bills/324/20220416030426000000.png new file mode 100644 index 0000000..042b115 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/bills/324/20220416030426000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/bills/324/20220416060420000000.png b/PHP-SourceCode/assets/images/upload/bills/324/20220416060420000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/bills/324/20220416060420000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/bills/324/20220416060421000000.png b/PHP-SourceCode/assets/images/upload/bills/324/20220416060421000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/bills/324/20220416060421000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/bills/324/20220416060433000000.png b/PHP-SourceCode/assets/images/upload/bills/324/20220416060433000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/bills/324/20220416060433000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100417000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100417000000.png new file mode 100644 index 0000000..381c745 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100417000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100458000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100458000000.png new file mode 100644 index 0000000..6e56741 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220415100458000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050416000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050416000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050416000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050425000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050425000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050425000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050430000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050430000000.png new file mode 100644 index 0000000..381c745 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416050430000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416090453000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416090453000000.png new file mode 100644 index 0000000..f85fef0 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416090453000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416100456000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416100456000000.png new file mode 100644 index 0000000..2729c3f Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416100456000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416120443000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416120443000000.png new file mode 100644 index 0000000..042b115 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/324/20220416120443000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/343/20221130051115000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/343/20221130051115000000.png new file mode 100644 index 0000000..2cb793f Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/343/20221130051115000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090538000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090538000000.png new file mode 100644 index 0000000..8cd01d6 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090538000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090542000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090542000000.png new file mode 100644 index 0000000..8cd01d6 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090542000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090546000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090546000000.png new file mode 100644 index 0000000..8cd01d6 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/346/20230525090546000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020629000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020629000000.png new file mode 100644 index 0000000..da87015 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020629000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020640000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020640000000.png new file mode 100644 index 0000000..da87015 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/353/20230602020640000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/357/20230105080148000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/357/20230105080148000000.png new file mode 100644 index 0000000..4d7fdb1 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/357/20230105080148000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/364/20230203070218000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/364/20230203070218000000.png new file mode 100644 index 0000000..bb9c23b Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/364/20230203070218000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/368/20230801070800000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/368/20230801070800000000.png new file mode 100644 index 0000000..f235dc9 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/368/20230801070800000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/372/20230714100709000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/372/20230714100709000000.png new file mode 100644 index 0000000..da87015 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/372/20230714100709000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/419/20231124101140000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/419/20231124101140000000.png new file mode 100644 index 0000000..8de48f9 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/419/20231124101140000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041115000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041115000000.png new file mode 100644 index 0000000..80502aa Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041115000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041152000000.png b/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041152000000.png new file mode 100644 index 0000000..e4b2903 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/prescriptions/428/20231124041152000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/receipt/324/20220416030444000000.png b/PHP-SourceCode/assets/images/upload/receipt/324/20220416030444000000.png new file mode 100644 index 0000000..2ea8aa2 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/receipt/324/20220416030444000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/receipt/324/20220416080406000000.png b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080406000000.png new file mode 100644 index 0000000..e383b95 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080406000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/receipt/324/20220416080443000000.png b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080443000000.png new file mode 100644 index 0000000..e383b95 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080443000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/receipt/324/20220416080458000000.png b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080458000000.png new file mode 100644 index 0000000..92ac1a7 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080458000000.png differ diff --git a/PHP-SourceCode/assets/images/upload/receipt/324/20220416080459000000.png b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080459000000.png new file mode 100644 index 0000000..e383b95 Binary files /dev/null and b/PHP-SourceCode/assets/images/upload/receipt/324/20220416080459000000.png differ diff --git a/PHP-SourceCode/assets/js/bootstrap.min.js b/PHP-SourceCode/assets/js/bootstrap.min.js new file mode 100644 index 0000000..b7d22c5 --- /dev/null +++ b/PHP-SourceCode/assets/js/bootstrap.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,h){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
      ',trigger:"hover focus",title:"",delay:0,html:!(Ie={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(Se={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},we="out",Ne={HIDE:"hide"+Ee,HIDDEN:"hidden"+Ee,SHOW:(De="show")+Ee,SHOWN:"shown"+Ee,INSERTED:"inserted"+Ee,CLICK:"click"+Ee,FOCUSIN:"focusin"+Ee,FOCUSOUT:"focusout"+Ee,MOUSEENTER:"mouseenter"+Ee,MOUSELEAVE:"mouseleave"+Ee},Oe="fade",ke="show",Pe=".tooltip-inner",je=".arrow",He="hover",Le="focus",Re="click",xe="manual",We=function(){function i(t,e){if("undefined"==typeof h)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=pe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(pe(this.getTipElement()).hasClass(ke))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),pe.removeData(this.element,this.constructor.DATA_KEY),pe(this.element).off(this.constructor.EVENT_KEY),pe(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&pe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===pe(this.element).css("display"))throw new Error("Please use show on visible elements");var t=pe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){pe(this.element).trigger(t);var n=pe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Fn.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&pe(i).addClass(Oe);var o="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,s=this._getAttachment(o);this.addAttachmentClass(s);var a=!1===this.config.container?document.body:pe(document).find(this.config.container);pe(i).data(this.constructor.DATA_KEY,this),pe.contains(this.element.ownerDocument.documentElement,this.tip)||pe(i).appendTo(a),pe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new h(this.element,i,{placement:s,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:je},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),pe(i).addClass(ke),"ontouchstart"in document.documentElement&&pe(document.body).children().on("mouseover",null,pe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,pe(e.element).trigger(e.constructor.Event.SHOWN),t===we&&e._leave(null,e)};if(pe(this.tip).hasClass(Oe)){var c=Fn.getTransitionDurationFromElement(this.tip);pe(this.tip).one(Fn.TRANSITION_END,l).emulateTransitionEnd(c)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=pe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==De&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),pe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(pe(this.element).trigger(i),!i.isDefaultPrevented()){if(pe(n).removeClass(ke),"ontouchstart"in document.documentElement&&pe(document.body).children().off("mouseover",null,pe.noop),this._activeTrigger[Re]=!1,this._activeTrigger[Le]=!1,this._activeTrigger[He]=!1,pe(this.tip).hasClass(Oe)){var o=Fn.getTransitionDurationFromElement(n);pe(n).one(Fn.TRANSITION_END,r).emulateTransitionEnd(o)}else r();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){pe(this.getTipElement()).addClass(Te+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||pe(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(pe(t.querySelectorAll(Pe)),this.getTitle()),pe(t).removeClass(Oe+" "+ke)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?pe(e).parent().is(t)||t.empty().append(e):t.text(pe(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return Ie[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)pe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==xe){var e=t===He?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===He?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;pe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}pe(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||pe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Le:He]=!0),pe(e.getTipElement()).hasClass(ke)||e._hoverState===De?e._hoverState=De:(clearTimeout(e._timeout),e._hoverState=De,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===De&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||pe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),pe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Le:He]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=we,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===we&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=l({},this.constructor.Default,pe(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),Fn.typeCheckConfig(ve,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=pe(this.getTipElement()),e=t.attr("class").match(be);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(pe(t).removeClass(Oe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=pe(this).data(ye),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),pe(this).data(ye,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.1.3"}},{key:"Default",get:function(){return Ae}},{key:"NAME",get:function(){return ve}},{key:"DATA_KEY",get:function(){return ye}},{key:"Event",get:function(){return Ne}},{key:"EVENT_KEY",get:function(){return Ee}},{key:"DefaultType",get:function(){return Se}}]),i}(),pe.fn[ve]=We._jQueryInterface,pe.fn[ve].Constructor=We,pe.fn[ve].noConflict=function(){return pe.fn[ve]=Ce,We._jQueryInterface},We),Jn=(qe="popover",Ke="."+(Fe="bs.popover"),Me=(Ue=e).fn[qe],Qe="bs-popover",Be=new RegExp("(^|\\s)"+Qe+"\\S+","g"),Ve=l({},zn.Default,{placement:"right",trigger:"click",content:"",template:''}),Ye=l({},zn.DefaultType,{content:"(string|element|function)"}),ze="fade",Ze=".popover-header",Ge=".popover-body",$e={HIDE:"hide"+Ke,HIDDEN:"hidden"+Ke,SHOW:(Je="show")+Ke,SHOWN:"shown"+Ke,INSERTED:"inserted"+Ke,CLICK:"click"+Ke,FOCUSIN:"focusin"+Ke,FOCUSOUT:"focusout"+Ke,MOUSEENTER:"mouseenter"+Ke,MOUSELEAVE:"mouseleave"+Ke},Xe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){Ue(this.getTipElement()).addClass(Qe+"-"+t)},r.getTipElement=function(){return this.tip=this.tip||Ue(this.config.template)[0],this.tip},r.setContent=function(){var t=Ue(this.getTipElement());this.setElementContent(t.find(Ze),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ge),e),t.removeClass(ze+" "+Je)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=Ue(this.getTipElement()),e=t.attr("class").match(Be);null!==e&&0=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t',d.childNodes[0].getAttribute("href")||""}function r(e,t){var r=e.substr(t,2);return parseInt(r,16)}function n(n,c){for(var o="",a=r(n,c),i=c+2;i-1&&(o.href="mailto:"+n(o.href,a+l.length))}catch(i){e(i)}}function o(t){for(var r=t.querySelectorAll(u),c=0;c=b}},d.prototype.validateInput=function(b){var c=a(b.target),d=c.data("bs.validator.errors");if(c.is('[type="radio"]')&&(c=this.$element.find('input[name="'+c.attr("name")+'"]')),this.$element.trigger(b=a.Event("validate.bs.validator",{relatedTarget:c[0]})),!b.isDefaultPrevented()){var e=this;this.runValidators(c).done(function(f){c.data("bs.validator.errors",f),f.length?e.showErrors(c):e.clearErrors(c),d&&f.toString()===d.toString()||(b=f.length?a.Event("invalid.bs.validator",{relatedTarget:c[0],detail:f}):a.Event("valid.bs.validator",{relatedTarget:c[0],detail:d}),e.$element.trigger(b)),e.toggleSubmit(),e.$element.trigger(a.Event("validated.bs.validator",{relatedTarget:c[0]}))})}},d.prototype.runValidators=function(b){function c(a){return b.data(a+"-error")||b.data("error")||"native"==a&&b[0].validationMessage||g.errors[a]}var e=[],f=a.Deferred(),g=this.options;return b.data("bs.validator.deferred")&&b.data("bs.validator.deferred").reject(),b.data("bs.validator.deferred",f),a.each(d.VALIDATORS,a.proxy(function(a,d){if((b.data(a)||"native"==a)&&!d.call(this,b)){var f=c(a);!~e.indexOf(f)&&e.push(f)}},this)),!e.length&&b.val()&&b.data("remote")?this.defer(b,function(){var d={};d[b.attr("name")]=b.val(),a.get(b.data("remote"),d).fail(function(a,b,d){e.push(c("remote")||d)}).always(function(){f.resolve(e)})}):f.resolve(e),f.promise()},d.prototype.validate=function(){var a=this.options.delay;return this.options.delay=0,this.$element.find(c).trigger("input.bs.validator"),this.options.delay=a,this},d.prototype.showErrors=function(b){var c=this.options.html?"html":"text";this.defer(b,function(){var d=b.closest(".form-group"),e=d.find(".help-block.with-errors"),f=d.find(".form-control-feedback"),g=b.data("bs.validator.errors");g.length&&(g=a("
        ").addClass("list-unstyled").append(a.map(g,function(b){return a("
      • ")[c](b)})),void 0===e.data("bs.validator.originalContent")&&e.data("bs.validator.originalContent",e.html()),e.empty().append(g),d.addClass("has-error"),f.length&&f.removeClass(this.options.feedback.success)&&f.addClass(this.options.feedback.error)&&d.removeClass("has-success"))})},d.prototype.clearErrors=function(a){var b=a.closest(".form-group"),c=b.find(".help-block.with-errors"),d=b.find(".form-control-feedback");c.html(c.data("bs.validator.originalContent")),b.removeClass("has-error"),d.length&&d.removeClass(this.options.feedback.error)&&d.addClass(this.options.feedback.success)&&b.addClass("has-success")},d.prototype.hasErrors=function(){function b(){return!!(a(this).data("bs.validator.errors")||[]).length}return!!this.$element.find(c).filter(b).length},d.prototype.isIncomplete=function(){function b(){return"checkbox"===this.type?!this.checked:"radio"===this.type?!a('[name="'+this.name+'"]:checked').length:""===a.trim(this.value)}return!!this.$element.find(c).filter("[required]").filter(b).length},d.prototype.onSubmit=function(a){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()},d.prototype.toggleSubmit=function(){if(this.options.disable){var b=a('button[type="submit"], input[type="submit"]').filter('[form="'+this.$element.attr("id")+'"]').add(this.$element.find('input[type="submit"], button[type="submit"]'));b.toggleClass("disabled",this.isIncomplete()||this.hasErrors()).css({"pointer-events":"all",cursor:"pointer"})}},d.prototype.defer=function(b,c){return c=a.proxy(c,this),this.options.delay?(window.clearTimeout(b.data("bs.validator.timeout")),void b.data("bs.validator.timeout",window.setTimeout(c,this.options.delay))):c()},d.prototype.destroy=function(){return this.$element.removeAttr("novalidate").removeData("bs.validator").off(".bs.validator"),this.$element.find(c).off(".bs.validator").removeData(["bs.validator.errors","bs.validator.deferred"]).each(function(){var b=a(this),c=b.data("bs.validator.timeout");window.clearTimeout(c)&&b.removeData("bs.validator.timeout")}),this.$element.find(".help-block.with-errors").each(function(){var b=a(this),c=b.data("bs.validator.originalContent");b.removeData("bs.validator.originalContent").html(c)}),this.$element.find('input[type="submit"], button[type="submit"]').removeClass("disabled"),this.$element.find(".has-error").removeClass("has-error"),this};var e=a.fn.validator;a.fn.validator=b,a.fn.validator.Constructor=d,a.fn.validator.noConflict=function(){return a.fn.validator=e,this},a(window).on("load",function(){a('form[data-toggle="validator"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery); \ No newline at end of file diff --git a/PHP-SourceCode/assets/js/jquery-ui.js b/PHP-SourceCode/assets/js/jquery-ui.js new file mode 100644 index 0000000..60a10de --- /dev/null +++ b/PHP-SourceCode/assets/js/jquery-ui.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){t.ui=t.ui||{};t.ui.version="1.12.1";var e,i=0,s=Array.prototype.slice;t.cleanData=(e=t.cleanData,function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{(s=t._data(n,"events"))&&s.remove&&t(n).triggerHandler("remove")}catch(t){}e(i)}),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0],l=h+"-"+(e=e.split(".")[1]);return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){if(!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),(a=new i).options=t.widget.extend({},a.options),t.each(s,function(e,s){t.isFunction(s)?r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}():r[e]=s}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n&&a.widgetEventPrefix||e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;a",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;o
        "),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),i===(s=o.offsetWidth)&&(s=n[0].clientWidth),n.remove(),e=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width0?"right":"center",vertical:c<0?"top":h>0?"bottom":"middle"};di(s(h),s(c))?u.important="horizontal":u.important="vertical",e.using.call(this,t,u)}),a.offset(t.extend(D,{using:o}))})},t.ui.position={fit:{left:function(t,e){var s,n=e.within,o=n.isWindow?n.scrollLeft:n.offset.left,a=n.width,r=t.left-e.collisionPosition.marginLeft,h=o-r,l=r+e.collisionWidth-a-o;e.collisionWidth>a?h>0&&l<=0?(s=t.left+h+e.collisionWidth-a-o,t.left+=h-s):t.left=l>0&&h<=0?o:h>l?o+a-e.collisionWidth:o:h>0?t.left+=h:l>0?t.left-=l:t.left=i(t.left-r,t.left)},top:function(t,e){var s,n=e.within,o=n.isWindow?n.scrollTop:n.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=o-r,l=r+e.collisionHeight-a-o;e.collisionHeight>a?h>0&&l<=0?(s=t.top+h+e.collisionHeight-a-o,t.top+=h-s):t.top=l>0&&h<=0?o:h>l?o+a-e.collisionHeight:o:h>0?t.top+=h:l>0?t.top-=l:t.top=i(t.top-r,t.top)}},flip:{left:function(t,e){var i,n,o=e.within,a=o.offset.left+o.scrollLeft,r=o.width,h=o.isWindow?o.scrollLeft:o.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];c<0?((i=t.left+d+p+f+e.collisionWidth-r-a)<0||i0&&((n=t.left-e.collisionPosition.marginLeft+d+p+f-h)>0||s(n)0&&((i=t.top-e.collisionPosition.marginTop+d+p+f-h)>0||s(i)")[0],c=t.each;function u(t,e,i){var s=r[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:s.max-1,c(a,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(e,s,n,r){if(void 0===e)return this._rgba=[null,null,null,null],this;(e.jquery||e.nodeType)&&(e=t(e).css(s),s=void 0);var h=this,l=t.type(e),p=this._rgba=[];return void 0!==s&&(e=[e,s,n,r],l="array"),"string"===l?this.parse(d(e)||i._default):"array"===l?(c(a.rgba.props,function(t,i){p[i.idx]=u(e[i.idx],i)}),this):"object"===l?(c(a,e instanceof o?function(t,i){e[i.cache]&&(h[i.cache]=e[i.cache].slice())}:function(i,s){var n=s.cache;c(s.props,function(t,i){if(!h[n]&&s.to){if("alpha"===t||null==e[t])return;h[n]=s.to(h._rgba)}h[n][i.idx]=u(e[t],i,!0)}),h[n]&&t.inArray(null,h[n].slice(0,3))<0&&(h[n][3]=1,s.from&&(h._rgba=s.from(h[n])))}),this):void 0},is:function(t){var e=o(t),i=!0,s=this;return c(a,function(t,n){var o,a=e[n.cache];return a&&(o=s[n.cache]||n.to&&n.to(s._rgba)||[],c(n.props,function(t,e){if(null!=a[e.idx])return i=a[e.idx]===o[e.idx]})),i}),i},_space:function(){var t=[],e=this;return c(a,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var i=o(t),s=i._space(),n=a[s],h=0===this.alpha()?o("transparent"):this,l=h[n.cache]||n.to(h._rgba),d=l.slice();return i=i[n.cache],c(n.props,function(t,s){var n=s.idx,o=l[n],a=i[n],h=r[s.type]||{};null!==a&&(null===o?d[n]=a:(h.mod&&(a-o>h.mod/2?o+=h.mod:o-a>h.mod/2&&(o-=h.mod)),d[n]=u((a-o)*e+o,s)))}),this[s](d)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=o(e)._rgba;return o(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&e<3&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,a.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:u<=.5?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},a.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],n=t[3],o=s<=.5?s*(1+i):s+i-s*i,a=2*s-o;return[Math.round(255*p(a,o,e+1/3)),Math.round(255*p(a,o,e)),Math.round(255*p(a,o,e-1/3)),n]},c(a,function(e,i){var n=i.props,a=i.cache,r=i.to,h=i.from;o.fn[e]=function(e){if(r&&!this[a]&&(this[a]=r(this._rgba)),void 0===e)return this[a].slice();var i,s=t.type(e),l="array"===s||"object"===s?e:arguments,d=this[a].slice();return c(n,function(t,e){var i=l["object"===s?t:e.idx];null==i&&(i=d[e.idx]),d[e.idx]=u(i,e)}),h?((i=o(h(d)))[a]=d,i):o(d)},c(n,function(i,n){o.fn[i]||(o.fn[i]=function(o){var a,r=t.type(o),h="alpha"===i?this._hsla?"hsla":"rgba":e,l=this[h](),c=l[n.idx];return"undefined"===r?c:("function"===r&&(o=o.call(this,c),r=t.type(o)),null==o&&n.empty?this:("string"===r&&(a=s.exec(o))&&(o=c+parseFloat(a[2])*("+"===a[1]?1:-1)),l[n.idx]=o,this[h](l)))})})}),o.hook=function(e){var i=e.split(" ");c(i,function(e,i){t.cssHooks[i]={set:function(e,s){var n,a,r="";if("transparent"!==s&&("string"!==t.type(s)||(n=d(s)))){if(s=o(n||s),!h.rgba&&1!==s._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(t){}s=s.blend(r&&"transparent"!==r?r:"_default")}s=s.toRgbaString()}try{e.style[i]=s}catch(t){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=o(e.elem,i),e.end=o(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},o.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),t.cssHooks.borderColor={expand:function(t){var e={};return c(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},i=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(r),function(){var e,i=["add","remove","toggle"],s={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function n(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)"string"==typeof n[i=n[s]]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(r.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){return{el:t(this),start:n(this)}}),(o=function(){t.each(i,function(t,i){e[i]&&a[i+"Class"](e[i])})})(),l=l.map(function(){return this.end=n(this.el[0]),this.diff=function(e,i){var n,o,a={};for(n in i)o=i[n],e[n]!==o&&(s[n]||!t.fx.step[n]&&isNaN(parseFloat(o))||(a[n]=o));return a}(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:(e=t.fn.addClass,function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){var e;function i(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function s(e){return!(e&&"number"!=typeof e&&!t.fx.speeds[e])||("string"==typeof e&&!t.effects.effect[e]||(!!t.isFunction(e)||"object"==typeof e&&!e.effect))}function n(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,s,0];return{top:parseFloat(n[1])||0,right:"auto"===n[2]?i:parseFloat(n[2]),bottom:"auto"===n[3]?s:parseFloat(n[3]),left:parseFloat(n[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=(e=t.expr.filters.animated,function(i){return!!t(i).data(a)||e(i)})),!1!==t.uiBackCompat&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;i").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(t){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data("ui-effects-style",t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data("ui-effects-style")||"",t.removeData("ui-effects-style")},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),float:e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data("ui-effects-placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e="ui-effects-placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){var e=i.apply(this,arguments),s=t.effects.effect[e.effect],n=s.mode,o=e.queue,r=o||"fx",h=e.complete,l=e.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||n;i.data(a,!0),c.push(s),n&&("show"===s||s===n&&"hide"===s)&&i.show(),n&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};if(t.fx.off||!s)return l?this[l](e.duration,h):this.each(function(){h&&h.call(this)});function d(i){var o=t(this);function r(){t.isFunction(h)&&h.call(o[0]),t.isFunction(i)&&i()}e.mode=c.shift(),!1===t.uiBackCompat||n?"none"===e.mode?(o[l](),r()):s.call(o[0],e,function(){o.removeData(a),t.effects.cleanUp(o),"hide"===e.mode&&o.hide(),r()}):(o.is(":hidden")?"hide"===l:"show"===l)?(o[l](),r()):s.call(o[0],e,r)}return!1===o?this.each(u).each(d):this.queue(r,u).queue(r,d)},show:function(t){return function(e){if(s(e))return t.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(t.fn.show),hide:function(t){return function(e){if(s(e))return t.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(e){if(s(e)||"boolean"==typeof e)return t.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):n(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
        ").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=n(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),o={},t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,e){o[e]=function(e){return Math.pow(e,t+2)}}),t.extend(o,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(o,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return t<.5?i(2*t)/2:1-i(-2*t+2)/2}});t.effects,t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&((n={opacity:1})[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),(n={})[m]=o;v").css({position:"absolute",visibility:"visible",left:-n*f,top:-s*g}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:g,left:o+(d?r*f:0),top:a+(d?h*g:0),opacity:d?0:1}).animate({left:o+(d?0:r*f),top:a+(d?0:h*g),opacity:d?1:0},e.duration||500,e.easing,_)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],c=e.duration/2,u=t.effects.createPlaceholder(s),d=s.cssClip(),p={clip:t.extend({},d)},f={clip:t.extend({},d)},g=[d[l[0]],d[l[1]]],m=s.queue().length;h&&(r=parseInt(h[1],10)/100*g[a?0:1]),p.clip[l[0]]=r,f.clip[l[0]]=r,f.clip[l[1]]=0,o&&(s.cssClip(f.clip),u&&u.css(t.effects.clipToBox(f)),f.clip=d),s.queue(function(i){u&&u.animate(t.effects.clipToBox(p),c,e.easing).animate(t.effects.clipToBox(f),c,e.easing),i()}).animate(p,c,e.easing).animate(f,c,e.easing).queue(i),t.effects.unshift(s,m,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},"box"!==d&&"both"!==d||(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),"content"!==d&&"both"!==d||n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),"content"!==d&&"both"!==d||(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a=o||"hide"===n,r=2*(e.times||5)+(a?1:0),h=e.duration/r,l=0,c=1,u=s.queue().length;for(!o&&s.is(":visible")||(s.css("opacity",0).show(),l=1);c0&&o.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(h)?(a=!e.disabled)&&(r=t(e).closest("fieldset")[0])&&(a=!r.disabled):a="a"===h&&e.href||i,a&&t(e).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}(t(e)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}});t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}};"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){var s="Width"===i?["Left","Right"]:["Top","Bottom"],n=i.toLowerCase(),o={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};function a(e,i,n,o){return t.each(s,function(){i-=parseFloat(t.css(e,"padding"+this))||0,n&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}t.fn["inner"+i]=function(e){return void 0===e?o["inner"+i].call(this):this.each(function(){t(this).css(n,a(this,e)+"px")})},t.fn["outer"+i]=function(e,s){return"number"!=typeof e?o["outer"+i].call(this,e):this.each(function(){t(this).css(n,a(this,e,!0,s)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))});var h,l;t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=(h=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g,function(t){return t.replace(h,"\\$1")}),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),(s=this.attr("id"))&&(o=(e=this.eq(0).parents().last()).add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return(!s||"static"!==e.css("position"))&&n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:(l=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++l)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||!1===this._trigger("beforeActivate",e,u)||(n.active=!h&&this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),(i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i).length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o=this,a=this.options.icons.submenu,r=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),i=r.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);o._addClass(s,"ui-menu-icon","ui-icon "+a),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(i,"ui-menu","ui-widget ui-widget-content ui-front"),(e=r.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var e=t(this);o._isDivider(e)&&o._addClass(e,"ui-menu-divider","ui-widget-content")}),n=(s=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(s,"ui-menu-item")._addClass(n,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),n<0?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;this.active?this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return(i=t(this)).offset().top-s-n<0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())):this.next(e)},previousPage:function(e){var i,s,n;this.active?this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return(i=t(this)).offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())):this.next(e)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,void(i=!0);e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||s.preventDefault());if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){if(s)return s=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(t),this._change(t))}}),this._initSource(),this.menu=t("
          ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)});n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),(s=i.item.attr("aria-label")||n.value)&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
          ").text(s).appendTo(this.liveRegion))},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;e&&(!e||i||s)||(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
          ").text(i.label)).appendTo(e)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=new RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
          ").text(i).appendTo(this.liveRegion))}});t.ui.autocomplete;var c=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
          ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};if(n)return"controlgroupLabel"===s?((o=e.element.find(n)).each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),void(i=i.concat(o.get()))):void(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o||n[s]("instance")),i.push(h[0])}})))}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this).data("ui-controlgroup-data");i&&i[e]&&i[e]()})},_updateCornerClass:function(t,e){var i=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,i)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(c,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}});t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),null!=(e=this.element[0].disabled)&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e=this.element[0].name,i="input[name='"+t.ui.escapeSelector(e)+"']";return e?(this.form.length?t(this.form[0].elements).filter(i):t(i).filter(function(){return 0===t(this).form().length})).not(this.element):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);t.ui.checkboxradio;t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;ni&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var a,r,h,l,c,u=this._dialogInst;return u||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),(u=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},t.data(this._dialogInput[0],"datepicker",u)),g(u.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(u,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(r=document.documentElement.clientWidth,h=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,c=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[r/2-100+l,h/2-150+c]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),u.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",u),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==i&&"span"!==i||s.removeClass(this.markerClassName).empty(),u===n&&(u=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&("input"===(i=e.nodeName.toLowerCase())?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==i&&"span"!==i||((s=n.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&("input"===(i=e.nodeName.toLowerCase())?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==i&&"span"!==i||((s=n.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e-1},_doKeyUp:function(e){var i=t.datepicker._getInst(e.target);if(i.input.val()!==i.lastVal)try{t.datepicker.parseDate(t.datepicker._get(i,"dateFormat"),i.input?i.input.val():null,t.datepicker._getFormatConfig(i))&&(t.datepicker._setDateFromField(i),t.datepicker._updateAlternate(i),t.datepicker._updateDatepicker(i))}catch(t){}return!0},_showDatepicker:function(e){var i,s,n,o,a,r,h;("input"!==(e=e.target||e).nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),t.datepicker._isDisabledDatepicker(e)||t.datepicker._lastInput===e)||(i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),!1!==(n=(s=t.datepicker._get(i,"beforeShow"))?s.apply(e,[e,i]):{})&&(g(i.settings,n),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),o=!1,t(e).parents().each(function(){return!(o|="fixed"===t(this).css("position"))}),a={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),a=t.datepicker._checkOffset(i,a,o),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":o?"fixed":"absolute",display:"none",left:a.left+"px",top:a.top+"px"}),i.inline||(r=t.datepicker._get(i,"showAnim"),h=t.datepicker._get(i,"duration"),i.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[r]?i.dpDiv.show(r,t.datepicker._get(i,"showOptions"),h):i.dpDiv[r||"show"](r?h:null),t.datepicker._shouldFocusInput(i)&&i.input.trigger("focus"),t.datepicker._curInst=i)))},_updateDatepicker:function(e){this.maxRows=4,u=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],o=e.dpDiv.find("."+this._dayOverClass+" a");o.length>0&&f.apply(o.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",17*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return[(i=t(e).offset()).left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,(o=this._get(a,"onClose"))&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id===t.datepicker._mainDivId||0!==i.parents("#"+t.datepicker._mainDivId).length||i.hasClass(t.datepicker.markerClassName)||i.closest("."+t.datepicker._triggerClass).length||!t.datepicker._datepickerShowing||t.datepicker._inDialog&&t.blockUI)&&(!i.hasClass(t.datepicker.markerClassName)||t.datepicker._curInst===s)||t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||((o=this._getInst(a[0])).selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),(s=this._get(o,"onSelect"))?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&e<6,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(""===(i="object"==typeof i?i.toString():i+""))return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=n+1-1)for(m=1,_=v;;){if(_<=(o=this._getDaysInMonth(g,m-1)))break;m++,_-=o}if((r=this._daylightSavingAdjust(new Date(g,m-1,_))).getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=s+112?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,tt=t.drawYear;if(Z<0&&(Z+=12,tt--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&ee;)--Z<0&&(Z=11,tt--);for(t.drawMonth=Z,t.drawYear=tt,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(tt,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,tt,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(tt,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,tt,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
          "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
          ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;k1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="
          "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,tt,Q,J,k>0||C>0,f,g)+"
      ",P=u?"":"",w=0;w<7;w++)P+="";for(T+=P+"",S=this._getDaysInMonth(tt,Z),tt===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(tt,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X&&this.maxRows>z?this.maxRows:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(tt,Z,1-H)),N=0;N",W=u?"":"",w=0;w<7;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],L=(F=A.getMonth()!==Z)&&!v||!E[0]||Q&&AJ,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}++Z>11&&(Z=0,tt++),x+=T+="
      "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+p[M]+"
      "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
      "+(X?"
      "+(U[0]>0&&C===U[1]-1?"
      ":""):"")}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
      ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),f=(p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e})(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
      "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&es?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||e.getFullYear()<=r)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new d,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1";t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var m=!1;t(document).on("mouseup",function(){m=!1});t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){if(!0===t.data(i.target,e.widgetName+".preventClickEvent"))return t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!m){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n=!("string"!=typeof this.options.cancel||!e.target.nodeName)&&t(e.target).closest(this.options.cancel).length;return!(s&&!n&&this._mouseCapture(e))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),m=!0,!0))}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,m=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n0)&&(this.handle=this._getHandle(e),!!this.handle&&(this._blurActiveElement(e),this._blockFrames(!0===i.iframeFix?"iframe":i.iframeFix),!0))},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
      ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]);t(e.target).closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),!1===this._trigger("start",e)?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(!1===this._trigger("drag",e,s))return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||!0===this.options.revert||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==i._trigger("stop",e)&&i._clear()}):!1!==this._trigger("stop",e)&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return!this.options.handle||!!t(e.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_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 e,i,s,n=this.options,o=this.document[0];this.relativeContainer=null,n.containment?"window"!==n.containment?"document"!==n.containment?n.containment.constructor!==Array?("parent"===n.containment&&(n.containment=this.helper[0].parentNode),(s=(i=t(n.containment))[0])&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i)):this.containment=n.containment:this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){this.isOver?(this.isOver=0,s.cancelHelperRemoval=!0,this.cancelHelperRemoval=!1,this._storedCSS={position:this.placeholder.css("position"),top:this.placeholder.css("top"),left:this.placeholder.css("left")},this._mouseStop(e),this.options.helper=this.options._helper):(this.cancelHelperRemoval=!0,this._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)l=(h=s.snapElements[d].left-s.margins.left)+s.snapElements[d].width,u=(c=s.snapElements[d].top-s.margins.top)+s.snapElements[d].height,_l+g||bu+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=Math.abs(c-b)<=g,o=Math.abs(u-v)<=g,a=Math.abs(h-_)<=g,r=Math.abs(l-m)<=g,n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=Math.abs(c-v)<=g,o=Math.abs(u-b)<=g,a=Math.abs(h-m)<=g,r=Math.abs(l-_)<=g,n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}});t.ui.draggable;t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},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},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s,n=i&&"left"===i?"scrollLeft":"scrollTop";return e[n]>0||(e[n]=1,s=e[n]>0,e[n]=0,s)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
      ").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.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",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(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles()}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".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=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;i"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;for(i in e=e||this.element,this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/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(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)((s=t(this.handles[i])[0])===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),!!h&&(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1)},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options;return this._helper&&(n=(s=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:this.sizeDiff.height,o=s?0:this.sizeDiff.width,a={width:this.helper.width()-o,height:this.helper.height()-n},r=parseFloat(this.element.css("left"))+(this.position.left-this.originalPosition.left)||null,h=parseFloat(this.element.css("top"))+(this.position.top-this.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),this.helper.height(this.size.height),this.helper.width(this.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),it.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
      "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),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(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,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}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance").options;t(e.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),!1!==t.uiBackCompat&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&s.maxWidthp,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((f-c<=0||p-l<=0)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}});t.ui.resizable;t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;i<0&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&!1!==this._trigger("beforeClose",e)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===e||t.contains(this.uiDialog[0],e)||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
      ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),void this.close(e);if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
      "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
      "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
      ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var e=this,i=this.options;function s(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(i,n){e._addClass(t(this),"ui-dialog-dragging"),e._blockFrames(),e._trigger("dragStart",i,s(n))},drag:function(t,i){e._trigger("drag",t,s(i))},stop:function(n,o){var a=o.offset.left-e.document.scrollLeft(),r=o.offset.top-e.document.scrollTop();i.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" top"+(r>=0?"+":"")+r,of:e.window},e._removeClass(t(this),"ui-dialog-dragging"),e._unblockFrames(),e._trigger("dragStop",n,s(o))}})},_makeResizable:function(){var e=this,i=this.options,s=i.resizable,n=this.uiDialog.css("position"),o="string"==typeof s?s:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(i,s){e._addClass(t(this),"ui-dialog-resizing"),e._blockFrames(),e._trigger("resizeStart",i,a(s))},resize:function(t,i){e._trigger("resize",t,a(i))},stop:function(s,n){var o=e.uiDialog.offset(),r=o.left-e.document.scrollLeft(),h=o.top-e.document.scrollTop();i.height=e.uiDialog.height(),i.width=e.uiDialog.width(),i.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" top"+(h>=0?"+":"")+h,of:e.window},e._removeClass(t(this),"ui-dialog-resizing"),e._unblockFrames(),e._trigger("resizeStop",s,a(n))}}).css("position",n)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&((s=o.is(":data(ui-draggable)"))&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&((n=o.is(":data(ui-resizable)"))&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||!1===i||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
      ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return!!t(e.target).closest(".ui-dialog").length||!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
      ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==t.uiBackCompat&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});t.ui.dialog;t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){if(!arguments.length)return e||(e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});e=arguments[0]},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;e=e&&t=c&&a<=d||h>=c&&h<=d||ad)&&(o>=l&&o<=u||r>=l&&r<=u||ou);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;s").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
      ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
      "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");if(n)return s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||c.righth||c.bottomo&&c.righta&&c.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("
        ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("
        ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("
      • ",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("
      • "),n=t("
        ",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;e");this.handles=n.add(t(o.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
        ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l=this,c=this.options;return!c.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-l.values(e));(n>i||n===i&&(e===l._lastChangedValue||l.values(e)===c.min))&&(n=i,o=t(this),a=e)}),!1!==this._start(e,a)&&(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),r=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-r.left-o.width()/2,top:e.pageY-r.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(s=i/e)>1&&(s=1),s<0&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),void this._change(null,e);if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;o=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;s=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=!this._animateOff&&r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=(h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())*100,c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),!0===h.options.range&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?(s-n)/(o-n)*100:0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,o)))return}switch(n=this.options.step,i=s=this._hasMultipleValues()?this.values(o):this.value(),e.keyCode){case t.ui.keyCode.HOME:s=this._valueMin();break;case t.ui.keyCode.END:s=this._valueMax();break;case t.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+n);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-n)}this._slide(e,o,s)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&t=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(e),t(e.target).parents().each(function(){if(t.data(this,o.widgetName+"-item")===o)return s=t(this),!1}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),!!s&&(!(this.options.handle&&!i&&(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),!n))&&(this.currentItem=s,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY=0;i--)if(n=(s=this.items[i]).item[0],(o=this._intersectsWithPointer(s))&&s.instance===this.currentContainer&&!(n===this.currentItem[0]||this.placeholder[1===o?"next":"prev"]()[0]===n||t.contains(this.placeholder[0],n)||"semi-dynamic"===this.options.type&&t.contains(this.element[0],n))){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&s+lo&&e+ct[this.floating?"width":"height"]?p:o0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,s,n,o,a=[],r=[],h=this._connectWith();if(h&&e)for(i=h.length-1;i>=0;i--)for(s=(n=t(h[i],this.document[0])).length-1;s>=0;s--)(o=t.data(n[s],this.widgetFullName))&&o!==this&&!o.options.disabled&&r.push([t.isFunction(o.options.items)?o.options.items.call(o.element):t(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);function l(){a.push(this)}for(r.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=r.length-1;i>=0;i--)r[i][0].each(l);return t(a)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;i=0;i--)for(s=(n=t(d[i],this.document[0])).length-1;s>=0;s--)(o=t.data(n[s],this.widgetFullName))&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],s=0,l=(r=u[i][0]).length;s=0;i--)(s=this.items[i]).instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.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--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.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(e){var i,s=(e=e||this).options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){i&&!s.forcePlaceholderSize||(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,a=(c=d.floating||this._isFloating(this.currentItem))?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),Math.abs(e[u]-h)this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){var i;function s(){this.element[0]===t.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=i,this._delay(function(){this.previous=i}))}i=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),s.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,s.call(this)}),!1!==this._start(e)&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){if(t(e.currentTarget).hasClass("ui-state-active"))return!1!==this._start(e)&&void this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return i=t-(e=null!==s.min?s.min:0),t=e+(i=Math.round(i/s.step)*s.step),t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&t"},_buttonHtml:function(){return""}});var b;t.ui.spinner;t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(b=/#.*$/,function(t){var e,i;e=t.href.replace(b,""),i=location.href.replace(b,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return t.hash.length>1&&e===i}),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(i.active):this.active=t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){if(t(n).attr("aria-controls")===s)return e=i,!1}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==e&&-1!==e||(e=!!this.tabs.length&&0)),!1!==e&&-1===(e=this.tabs.index(this.tabs.eq(e)))&&(e=!i&&0),!i&&!1===e&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),void this._activate(s);case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),void this._activate(s!==this.options.active&&s);default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){var s=this.tabs.length-1;for(;-1!==t.inArray((e>s&&(e=0),e<0&&(e=s),e),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),!1!==e.active&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(a=(n=s.hash).substring(1),o=e.element.find(e._sanitizeSelector(n))):(n="#"+(a=h.attr("aria-controls")||t({}).uniqueId()[0].id),(o=e.element.find(n)).length||(o=e._createPanel(a)).insertAfter(e.panels[i-1]||e.tablist),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
        ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),!0===e||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===e)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget).closest("li"),o=n[0]===s[0],a=o&&i.collapsible,r=a?t():this._getPanelForTab(n),h=s.length?this._getPanelForTab(s):t(),l={oldTab:s,oldPanel:h,newTab:a?t():n,newPanel:r};e.preventDefault(),n.hasClass("ui-state-disabled")||n.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||!1===this._trigger("beforeActivate",e,l)||(i.active=!a&&this.tabs.index(n),this.active=o?t():n,this.xhr&&this.xhr.abort(),h.length||r.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),r.length&&this.load(this.tabs.index(n),e),this._toggle(e,l))},_toggle:function(e,i){var s=this,n=i.newPanel,o=i.oldPanel;function a(){s.running=!1,s._trigger("activate",e,i)}function r(){s._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),n.length&&s.options.show?s._show(n,s.options.show,a):(n.show(),a())}this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){s._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),o.hide(),r()),o.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&o.length?i.oldTab.attr("tabIndex",-1):n.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),n.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return!1===e?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;!1!==i&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(!0!==i){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),!1!==t.uiBackCompat&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});t.ui.tabs;t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),(s=t.trim(s.join(" ")))?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
        ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);if(e.is("[title]"))return e.data("ui-tooltip-title",e.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&((e=t.Event("blur")).target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;if("string"==typeof s||s.nodeType||s.jquery)return this._open(e,t,s);(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}))&&this._open(e,t,i)},_open:function(e,i,s){var n,o,a,r,h=t.extend({},this.options.position);function l(t){h.of=t,o.is(":hidden")||o.position(h)}s&&((n=this._find(i))?n.tooltip.find(".ui-tooltip-content").html(s):(i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),n=this._tooltip(i),o=n.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),(r=t("
        ").html(o.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),r.removeAttr("id").find("[id]").removeAttr("id"),r.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:l}),l(e)):o.position(t.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(a=this.delayedShow=setInterval(function(){o.is(":visible")&&(l(h.of),clearInterval(a))},t.fx.interval)),this._trigger("open",e,{tooltip:o})))},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1))):n.removeData("ui-tooltip-open")},_tooltip:function(e){var i=t("
        ").attr("role","tooltip"),s=t("
        ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==t.uiBackCompat&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});t.ui.tooltip}); \ No newline at end of file diff --git a/PHP-SourceCode/assets/js/jquery.counterup.min.js b/PHP-SourceCode/assets/js/jquery.counterup.min.js new file mode 100644 index 0000000..1b1b45e --- /dev/null +++ b/PHP-SourceCode/assets/js/jquery.counterup.min.js @@ -0,0 +1 @@ +(function(e){"use strict";e.fn.counterUp=function(t){var n=e.extend({time:400,delay:10},t);return this.each(function(){var t=e(this),r=n,i=function(){var e=[],n=r.time/r.delay,i=t.text(),s=/[0-9]+,[0-9]+/.test(i);i=i.replace(/,/g,"");var o=/^[0-9]+$/.test(i),u=/^[0-9]+\.[0-9]+$/.test(i),a=u?(i.split(".")[1]||[]).length:0;for(var f=n;f>=1;f--){var l=parseInt(i/n*f);u&&(l=parseFloat(i/n*f).toFixed(a));if(s)while(/(\d+)(\d{3})/.test(l.toString()))l=l.toString().replace(/(\d+)(\d{3})/,"$1,$2");e.unshift(l)}t.data("counterup-nums",e);t.text("0");var c=function(){t.text(t.data("counterup-nums").shift());if(t.data("counterup-nums").length)setTimeout(t.data("counterup-func"),r.delay);else{delete t.data("counterup-nums");t.data("counterup-nums",null);t.data("counterup-func",null)}};t.data("counterup-func",c);setTimeout(t.data("counterup-func"),r.delay)};t.waypoint(i,{offset:"100%",triggerOnce:!0})})}})(jQuery); \ No newline at end of file diff --git a/PHP-SourceCode/assets/js/jquery.magnific-popup.min.js b/PHP-SourceCode/assets/js/jquery.magnific-popup.min.js new file mode 100644 index 0000000..f3acce4 --- /dev/null +++ b/PHP-SourceCode/assets/js/jquery.magnific-popup.min.js @@ -0,0 +1 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
        ");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
        ',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
        ',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); \ No newline at end of file diff --git a/PHP-SourceCode/assets/js/jquery.min.js b/PHP-SourceCode/assets/js/jquery.min.js new file mode 100644 index 0000000..87dc897 --- /dev/null +++ b/PHP-SourceCode/assets/js/jquery.min.js @@ -0,0 +1 @@ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("':"vimeo"===g.type&&(c=''),f.addClass("owl-video-playing"),this._playing=f,d=a('
        '+c+"
        "),e.after(d)},d.prototype.isInFullScreen=function(){var d=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return d&&a(d).parent().hasClass("owl-video-frame")&&(this._core.speed(0),this._fullscreen=!0),d&&this._fullscreen&&this._playing?!1:this._fullscreen?(this._fullscreen=!1,!1):this._playing&&this._core.state.orientation!==b.orientation?(this._core.state.orientation=b.orientation,!1):!0},d.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=d}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){this.swapping="translated"==a.type},this),"translate.owl.carousel":a.proxy(function(){this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&this.core.support3d){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c)),f&&e.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",c))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.transitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c){var d=function(b){this.core=b,this.core.options=a.extend({},d.Defaults,this.core.options),this.handlers={"translated.owl.carousel refreshed.owl.carousel":a.proxy(function(){this.autoplay()},this),"play.owl.autoplay":a.proxy(function(a,b,c){this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(){this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this.core.settings.autoplayHoverPause&&this.autoplay()},this)},this.core.$element.on(this.handlers)};d.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},d.prototype.autoplay=function(){this.core.settings.autoplay&&!this.core.state.videoPlay?(b.clearInterval(this.interval),this.interval=b.setInterval(a.proxy(function(){this.play()},this),this.core.settings.autoplayTimeout)):b.clearInterval(this.interval)},d.prototype.play=function(){return c.hidden===!0||this.core.state.isTouch||this.core.state.isScrolling||this.core.state.isSwiping||this.core.state.inMotion?void 0:this.core.settings.autoplay===!1?void b.clearInterval(this.interval):void this.core.next(this.core.settings.autoplaySpeed)},d.prototype.stop=function(){b.clearInterval(this.interval)},d.prototype.pause=function(){b.clearInterval(this.interval)},d.prototype.destroy=function(){var a,c;b.clearInterval(this.interval);for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=d}(window.Zepto||window.jQuery,window,document),function(a){"use strict";var b=function(c){this._core=c,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.push(a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"add.owl.carousel":a.proxy(function(b){this._core.settings.dotsData&&this._templates.splice(b.position,0,a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))},this),"remove.owl.carousel prepared.owl.carousel":a.proxy(function(a){this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"change.owl.carousel":a.proxy(function(a){if("position"==a.property.name&&!this._core.state.revert&&!this._core.settings.loop&&this._core.settings.navRewind){var b=this._core.current(),c=this._core.maximum(),d=this._core.minimum();a.data=a.property.value>c?b>=c?d:c:a.property.value").addClass(d.dotClass).append(a("")).prop("outerHTML")]),d.navContainer&&d.dotsContainer||(this._controls.$container=a("
        ").addClass(d.controlsClass).appendTo(this.$element)),this._controls.$indicators=d.dotsContainer?a(d.dotsContainer):a("
        ").hide().addClass(d.dotsClass).appendTo(this._controls.$container),this._controls.$indicators.on("click","div",a.proxy(function(b){var c=a(b.target).parent().is(this._controls.$indicators)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(c,d.dotsSpeed)},this)),b=d.navContainer?a(d.navContainer):a("
        ").addClass(d.navContainerClass).prependTo(this._controls.$container),this._controls.$next=a("<"+d.navElement+">"),this._controls.$previous=this._controls.$next.clone(),this._controls.$previous.addClass(d.navClass[0]).html(d.navText[0]).hide().prependTo(b).on("click",a.proxy(function(){this.prev(d.navSpeed)},this)),this._controls.$next.addClass(d.navClass[1]).html(d.navText[1]).hide().appendTo(b).on("click",a.proxy(function(){this.next(d.navSpeed)},this));for(c in this._overrides)this._core[c]=a.proxy(this[c],this)},b.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},b.prototype.update=function(){var a,b,c,d=this._core.settings,e=this._core.clones().length/2,f=e+this._core.items().length,g=d.center||d.autoWidth||d.dotData?1:d.dotsEach||d.items;if("page"!==d.slideBy&&(d.slideBy=Math.min(d.slideBy,d.items)),d.dots||"page"==d.slideBy)for(this._pages=[],a=e,b=0,c=0;f>a;a++)(b>=g||0===b)&&(this._pages.push({start:a-e,end:a-e+g-1}),b=0,++c),b+=this._core.mergers(this._core.relative(a))},b.prototype.draw=function(){var b,c,d="",e=this._core.settings,f=(this._core.$stage.children(),this._core.relative(this._core.current()));if(!e.nav||e.loop||e.navRewind||(this._controls.$previous.toggleClass("disabled",0>=f),this._controls.$next.toggleClass("disabled",f>=this._core.maximum())),this._controls.$previous.toggle(e.nav),this._controls.$next.toggle(e.nav),e.dots){if(b=this._pages.length-this._controls.$indicators.children().length,e.dotData&&0!==b){for(c=0;c0?(d=new Array(b+1).join(this._templates[0]),this._controls.$indicators.append(d)):0>b&&this._controls.$indicators.children().slice(b).remove();this._controls.$indicators.find(".active").removeClass("active"),this._controls.$indicators.children().eq(a.inArray(this.current(),this._pages)).addClass("active")}this._controls.$indicators.toggle(e.dots)},b.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotData?1:c.dotsEach||c.items)}},b.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,function(a){return a.start<=b&&a.end>=b}).pop()},b.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},b.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},b.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},b.prototype.to=function(b,c,d){var e;d?a.proxy(this._overrides.to,this._core)(b,c):(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c))},a.fn.owlCarousel.Constructor.Plugins.Navigation=b}(window.Zepto||window.jQuery,window,document),function(a,b){"use strict";var c=function(d){this._core=d,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(){"URLHash"==this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){var c=a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");this._hashes[c]=b.content},this)},this._core.options=a.extend({},c.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(){var a=b.location.hash.substring(1),c=this._core.$stage.children(),d=this._hashes[a]&&c.index(this._hashes[a])||0;return a?void this._core.to(d,!1,!0):!1},this))};c.Defaults={URLhashListener:!1},c.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=c}(window.Zepto||window.jQuery,window,document); \ No newline at end of file diff --git a/PHP-SourceCode/assets/js/popper.min.js b/PHP-SourceCode/assets/js/popper.min.js new file mode 100644 index 0000000..50c2e25 --- /dev/null +++ b/PHP-SourceCode/assets/js/popper.min.js @@ -0,0 +1 @@ +(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return/(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=J(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!q(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,y=t(e.instance.popper),w=parseFloat(y['margin'+f],10),E=parseFloat(y['border'+f+'Width'],10),v=b-e.offsets.popper[m]-w-E;return v=$(J(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,Q(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case he.FLIP:p=[n,i];break;case he.CLOCKWISE:p=z(n);break;case he.COUNTERCLOCKWISE:p=z(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,y=-1!==['top','bottom'].indexOf(n),w=!!t.flipVariations&&(y&&'start'===r&&h||y&&'end'===r&&c||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),w&&(r=G(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!q(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){var t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.refresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.trigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(et.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this); \ No newline at end of file diff --git a/PHP-SourceCode/drugstore.sql b/PHP-SourceCode/drugstore.sql new file mode 100644 index 0000000..7eb5384 --- /dev/null +++ b/PHP-SourceCode/drugstore.sql @@ -0,0 +1,699 @@ +-- phpMyAdmin SQL Dump +-- version 5.1.1 +-- https://www.phpmyadmin.net/ +-- +-- Host: 127.0.0.1:3306 +-- Generation Time: May 29, 2024 at 03:12 AM +-- Server version: 10.11.7-MariaDB-cll-lve +-- PHP Version: 7.2.34 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `u624665963_drugstore` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `admin` +-- + +CREATE TABLE `admin` ( + `id` int(11) NOT NULL, + `UserName` varchar(100) NOT NULL, + `Password` varchar(100) NOT NULL, + `updationDate` timestamp NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `admin` +-- + +INSERT INTO `admin` (`id`, `UserName`, `Password`, `updationDate`) VALUES +(1, 'admin', '06d1108043ad13aebdca098c7e6bfe64', '2018-05-25 05:51:25'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `banners` +-- + +CREATE TABLE `banners` ( + `id` int(11) NOT NULL, + `name` varchar(250) DEFAULT NULL, + `image` text DEFAULT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `bill_payment` +-- + +CREATE TABLE `bill_payment` ( + `id` int(10) NOT NULL, + `name` varchar(200) DEFAULT NULL, + `email` varchar(200) DEFAULT NULL, + `mobile` varchar(11) DEFAULT NULL, + `title` varchar(200) DEFAULT NULL, + `bill` text DEFAULT NULL, + `receipt` text DEFAULT NULL, + `amount` varchar(200) DEFAULT NULL, + `user_id` int(10) NOT NULL, + `payment_status` varchar(200) NOT NULL DEFAULT 'unpaid', + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `bill_payment` +-- + +INSERT INTO `bill_payment` (`id`, `name`, `email`, `mobile`, `title`, `bill`, `receipt`, `amount`, `user_id`, `payment_status`, `created_date`) VALUES +(1, 'Santosh', 'santosh@gmail.com', '9876542222', 'Electric Bill', 'assets/images/upload/bills/324/20220416060420000000.png', NULL, '450.00', 324, 'unpaid', '2022-04-16 09:36:20'), +(3, 'santosh', '', '9876543210', 'Electricity Bill', 'assets/images/upload/bills/324/20220416030426000000.png', 'assets/images/upload/receipt/324/20220416030444000000.png', '500', 324, 'paid', '2022-04-16 18:42:26'), +(4, 'Chinmaydeep ', '', '7259696822', 'Electricity Bill', 'assets/images/upload/bills/331/20220416040456000000.png', 'assets/images/upload/receipt/331/20220416040401000000.png', '1000', 331, 'paid', '2022-04-16 16:10:56'), +(5, 'Chinmaydeep ', '', '7259696822', 'DTH/Cable', 'assets/images/upload/bills/331/20220417070413000000.png', 'assets/images/upload/receipt/331/20220418040432000000.png', '100', 331, 'paid', '2022-04-17 19:54:13'), +(6, 'Chinmaydeep ', '', '7406077618', 'Electricity Bill', 'assets/images/upload/bills/336/20220502010515000000.png', NULL, '1000', 336, 'unpaid', '2022-05-02 13:08:15'), +(7, 'Pavan Kumar', '', '7349278500', 'Electricity Bill', 'assets/images/upload/bills/340/20220628060621000000.png', NULL, '600', 340, 'unpaid', '2022-06-28 06:58:21'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `cart` +-- + +CREATE TABLE `cart` ( + `id` int(11) NOT NULL, + `product_id` int(11) NOT NULL, + `quantity` int(11) NOT NULL DEFAULT 0, + `user_id` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `categories` +-- + +CREATE TABLE `categories` ( + `id` int(11) NOT NULL, + `category` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + `cateimg` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=ucs2 COLLATE=ucs2_general_ci; + +-- +-- Dumping data for table `categories` +-- + +INSERT INTO `categories` (`id`, `category`, `cateimg`, `created_date`) VALUES +(371, 'Че там', 'assets/images/ProductImage/category/20231213101214000000.png', '2023-12-03 13:27:09'), +(372, 'NULL', 'assets/images/ProductImage/category/20240525120556000000.png', '2023-12-05 15:43:39'), +(373, 'Витамины и минералы ', 'assets/images/ProductImage/category/20231207031219000000.png', '2023-12-07 15:45:19'), +(374, 'Мази и кремы ', 'assets/images/ProductImage/category/20231207031258000000.png', '2023-12-07 15:49:58'), +(375, 'Глазные капли и мази ', 'assets/images/ProductImage/category/20231207031213000000.png', '2023-12-07 15:51:13'), +(376, 'Уколы и системы ', 'assets/images/ProductImage/category/20231207041251000000.png', '2023-12-07 16:16:51'), +(377, 'hfbf', 'assets/images/ProductImage/category/20240129060134000000.png', '2024-01-29 06:22:39'), +(378, 'new', 'assets/images/ProductImage/category/20240329030326000000.png', '2024-03-29 15:41:26'), +(379, '11333333333333', 'assets/images/ProductImage/category/20240511120505000000.png', '2024-05-11 00:59:05'), +(380, '11333333333', 'assets/images/ProductImage/category/20240511010551000000.png', '2024-05-11 01:06:51'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `items` +-- + +CREATE TABLE `items` ( + `id` int(100) NOT NULL, + `name` varchar(100) NOT NULL, + `category_id` int(11) NOT NULL, + `sub_category_id` int(10) DEFAULT NULL, + `description` longtext DEFAULT NULL, + `attribute` varchar(100) DEFAULT NULL, + `currency` varchar(100) NOT NULL DEFAULT 'Rs.', + `discount` varchar(100) DEFAULT NULL, + `price` varchar(50) NOT NULL, + `homepage` varchar(10) DEFAULT NULL, + `prescription_required` tinyint(1) DEFAULT 0, + `active` tinyint(1) NOT NULL DEFAULT 1, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `items` +-- + +INSERT INTO `items` (`id`, `name`, `category_id`, `sub_category_id`, `description`, `attribute`, `currency`, `discount`, `price`, `homepage`, `prescription_required`, `active`, `created_date`) VALUES +(1132, 'Цетрин ', 371, 417, '

        Противоаллергические таблетки Цетрин 

        ', '10мг', 'Rs.', '', '2300', 'NO', 0, 1, '2023-12-07 17:09:13'), +(1137, 'Vitrum', 373, 420, 'Витаминный комплекс ', '60таблеток ', 'Rs.', '', '5500', 'NO', 0, 1, '2023-12-07 17:23:11'), +(1138, 'Витамин С ', 373, 421, '

        Витамин С 

        ', '20таблеток', 'Rs.', '', '2600', 'NO', 0, 1, '2023-12-07 17:24:14'), +(1139, 'Витамин Д3', 373, 422, '

        Д3 Витамины 

        ', '60капсул', 'Rs.', '', '3500', 'NO', 0, 1, '2023-12-07 17:25:40'), +(1140, 'Адвантан', 374, 423, '

        Адвантан мазь от аллергии 

        ', '15г', 'Rs.', '', '3400', 'NO', 0, 1, '2023-12-07 17:27:16'), +(1141, 'Грибкосепт', 374, 424, 'Грибкосепт крем ', '100мл', 'Rs.', '', '5000', 'YES', 0, 1, '2023-12-07 17:29:48'), +(1142, 'Парин Пос', 375, 425, '

        Средство для глаз

        ', '50г', 'Rs.', '', '5000', 'NO', 0, 1, '2023-12-07 17:31:02'), +(1143, 'Тобрекс ', 375, 426, '

        Для лечения глазных инфекций 

        ', '5мл', 'Rs.', '', '5000', 'NO', 0, 1, '2023-12-07 17:33:39'), +(1144, 'Covid 19 ', 376, 427, '

        Система от ковид 

        ', '5мм', 'Rs.', '', '10000', 'NO', 0, 1, '2023-12-07 17:35:42'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `notification` +-- + +CREATE TABLE `notification` ( + `id` int(11) NOT NULL, + `title` varchar(255) NOT NULL, + `description` text NOT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `offers` +-- + +CREATE TABLE `offers` ( + `id` int(11) NOT NULL, + `name` varchar(250) DEFAULT NULL, + `image` text DEFAULT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `orderlist` +-- + +CREATE TABLE `orderlist` ( + `id` int(50) NOT NULL, + `order_id` int(10) NOT NULL, + `itemName` varchar(500) NOT NULL, + `itemQuantity` varchar(100) NOT NULL, + `attribute` varchar(100) NOT NULL, + `currency` varchar(100) NOT NULL, + `itemImage` varchar(250) DEFAULT NULL, + `itemPrice` varchar(30) NOT NULL, + `itemTotal` varchar(50) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `orderlist` +-- + +INSERT INTO `orderlist` (`id`, `order_id`, `itemName`, `itemQuantity`, `attribute`, `currency`, `itemImage`, `itemPrice`, `itemTotal`) VALUES +(464, 125, 'Супростин ', '1', '50мг', 'Rs.', 'assets/images/ProductImage/product/1131202312070512550000008686851751892.png', '2500', '2500.0'), +(465, 125, 'Цетрин ', '1', '10мг', 'Rs.', 'assets/images/ProductImage/product/113220231207051213000000376334835693.png', '2300', '2300.0'), +(466, 126, 'Супростин ', '4', '50мг', 'Rs.', 'assets/images/ProductImage/product/1131202312070512550000008686851751892.png', '2500', '10000.0'), +(467, 126, 'Ацыкловир', '1', '200мг', 'Rs.', 'assets/images/ProductImage/product/1130202312070512530000003116024234645.png', '2300', '2300.0'), +(468, 126, 'Амоксициллин', '1', '500мг', 'Rs.', 'assets/images/ProductImage/product/1129202312070412540000008820901110834.png', '1200', '1200.0'), +(469, 127, 'Амоксициллин', '1', '500мг', 'Rs.', 'assets/images/ProductImage/product/1129202312070412540000008820901110834.png', '1200', '1200.0'), +(470, 127, 'Ацыкловир', '1', '200мг', 'Rs.', 'assets/images/ProductImage/product/1130202312070512530000003116024234645.png', '2300', '2300.0'), +(471, 127, 'Доктор Мом ', '1', '100мл', 'Rs.', 'assets/images/ProductImage/product/1133202312070512430000009613479590758.png', '2800', '2800.0'), +(472, 128, 'Амоксициллин', '1', '500мг', 'Rs.', 'assets/images/ProductImage/product/1129202312070412540000008820901110834.png', '1200', '1200.0'), +(473, 128, 'Ацыкловир', '1', '200мг', 'Rs.', 'assets/images/ProductImage/product/1130202312070512530000003116024234645.png', '2300', '2300.0'), +(474, 128, 'Супростин ', '1', '50мг', 'Rs.', 'assets/images/ProductImage/product/1131202312070512550000008686851751892.png', '2500', '2500.0'), +(475, 128, 'Цетрин ', '1', '10мг', 'Rs.', 'assets/images/ProductImage/product/113220231207051213000000376334835693.png', '2300', '2300.0'), +(476, 128, 'Доктор Мом ', '1', '100мл', 'Rs.', 'assets/images/ProductImage/product/1133202312070512430000009613479590758.png', '2800', '2800.0'), +(477, 128, 'Лазолван ', '1', '100мл', 'Rs.', 'assets/images/ProductImage/product/1134202312070512420000008930024893245.png', '3000', '3000.0'), +(478, 128, 'Флунол ', '1', '75мл', 'Rs.', 'assets/images/ProductImage/product/1135202312070512230000008271455688294.png', '5000', '5000.0'), +(479, 129, 'Лазолван ', '1', '100мл', 'Rs.', 'assets/images/ProductImage/product/1134202312070512420000008930024893245.png', '3000', '3000.0'), +(480, 130, 'Test Product 01', '2', '100k', 'VND', 'assets/images/ProductImage/product/113120240406060445000000623065852999.png', '2500', '5000.0'), +(481, 131, 'Test Product 01', '5', '100k', 'VND', 'assets/images/ProductImage/product/113120240406060445000000623065852999.png', '2500', '12500.0'), +(482, 132, 'Test Product 01', '1', '100k', 'VND', 'assets/images/ProductImage/product/113120240406060445000000623065852999.png', '2500', '2500.0'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `orders` +-- + +CREATE TABLE `orders` ( + `id` int(11) NOT NULL, + `status` varchar(50) NOT NULL, + `user_id` int(11) NOT NULL, + `date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `total` varchar(20) DEFAULT NULL, + `name` varchar(200) DEFAULT NULL, + `email` varchar(200) DEFAULT NULL, + `phone` varchar(10) DEFAULT NULL, + `address` text DEFAULT NULL, + `city` varchar(200) DEFAULT NULL, + `state` varchar(200) DEFAULT NULL, + `zip_code` varchar(6) DEFAULT NULL, + `landmark` text DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `orders` +-- + +INSERT INTO `orders` (`id`, `status`, `user_id`, `date`, `total`, `name`, `email`, `phone`, `address`, `city`, `state`, `zip_code`, `landmark`) VALUES +(125, 'Delivered', 454, '2024-04-17 22:01:07', '4800', 'Test User', 'p@gmail.con', '9876598765', 'Jama Masjid, Dehuroad,New Delhi,Delhi,412104', 'New Delhi', 'Delhi', '412104', NULL), +(126, 'Delivered', 454, '2024-04-17 22:01:18', '13500', 'Test User', 'p@gmail.con', '9876598765', 'Jama Masjid, Dehuroad,Delhi,Delhi,412104', 'Delhi', 'Delhi', '412104', NULL), +(127, 'Delivered', 454, '2024-04-17 22:01:52', '6300', 'Test User', 'p@gmail.con', '9876598765', 'Jama Masjid, Dehuroad,Delhi,Delhi,412104', 'Delhi', 'Delhi', '412104', NULL), +(128, 'Confirmed', 454, '2024-02-03 17:24:39', '19100', 'Test User', 'p@gmail.com', '9876598765', 'Jama Masjid, Dehuroad,Delhi,Delhi,412104', 'Delhi', 'Delhi', '412104', NULL), +(129, 'Confirmed', 454, '2024-03-21 09:35:19', '3000', 'Test User', 'p@gmail.com', '9876598765', 'Jama Masjid, Dehuroad,Delhi,Delhi,412104', 'Delhi', 'Delhi', '412104', NULL), +(130, 'Pending', 477, '2024-05-27 08:17:01', '5000', 'David Nguyen', 'hahsg@gmail.com', '0312345678', '5172 ,Marmagao,Goa,0333', 'Marmagao', 'Goa', '0333', NULL), +(131, 'Pending', 477, '2024-05-27 08:22:58', '12500', 'David Nguyen', 'hahsg@gmail.com', '0312345678', '5555,Marmagao,Goa,0333', 'Marmagao', 'Goa', '0333', NULL), +(132, 'Pending', 477, '2024-05-27 08:24:04', '2500', 'David Nguyen', 'hahsg@gmail.com', '0312345678', '5555,Nongstoin,Meghalaya,0333', 'Nongstoin', 'Meghalaya', '0333', NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `payment` +-- + +CREATE TABLE `payment` ( + `id` int(11) NOT NULL, + `paymentMode` varchar(100) DEFAULT NULL, + `amount` varchar(10) DEFAULT NULL, + `paymentId` text DEFAULT NULL, + `paymentStatus` varchar(100) DEFAULT NULL, + `paymentDetails` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`paymentDetails`)), + `user_id` int(11) NOT NULL, + `order_id` int(11) NOT NULL, + `created_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `prescription` +-- + +CREATE TABLE `prescription` ( + `id` int(10) NOT NULL, + `name` varchar(200) DEFAULT NULL, + `email` varchar(200) DEFAULT NULL, + `mobile` varchar(11) DEFAULT NULL, + `remark` text DEFAULT NULL, + `title` varchar(200) DEFAULT NULL, + `image` text DEFAULT NULL, + `user_id` int(10) DEFAULT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `product_image` +-- + +CREATE TABLE `product_image` ( + `id` int(10) NOT NULL, + `image` text DEFAULT NULL, + `item_id` int(10) DEFAULT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `product_image` +-- + +INSERT INTO `product_image` (`id`, `image`, `item_id`, `created_date`) VALUES +(79, 'assets/images/ProductImage/product/113220231207051213000000376334835693.png', 1132, '2023-12-07 17:09:13'), +(84, 'assets/images/ProductImage/product/1137202312070512110000004529032986744.png', 1137, '2023-12-07 17:23:11'), +(85, 'assets/images/ProductImage/product/1138202312070512140000009804421205945.png', 1138, '2023-12-07 17:24:14'), +(86, 'assets/images/ProductImage/product/1139202312070512400000009653616038530.png', 1139, '2023-12-07 17:25:40'), +(87, 'assets/images/ProductImage/product/114020231207051216000000929908435970.png', 1140, '2023-12-07 17:27:16'), +(88, 'assets/images/ProductImage/product/1141202312070512480000009450919297201.png', 1141, '2023-12-07 17:29:48'), +(89, 'assets/images/ProductImage/product/1142202312070512020000002803202429736.png', 1142, '2023-12-07 17:31:02'), +(90, 'assets/images/ProductImage/product/1143202312070512390000006671028459196.png', 1143, '2023-12-07 17:33:39'), +(91, 'assets/images/ProductImage/product/1144202312070512420000009257785878360.png', 1144, '2023-12-07 17:35:42'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sub_categories` +-- + +CREATE TABLE `sub_categories` ( + `id` int(11) NOT NULL, + `category_id` int(10) DEFAULT NULL, + `sub_category_title` varchar(200) DEFAULT NULL, + `sub_category_img` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, + `created_date` datetime NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=ucs2 COLLATE=ucs2_general_ci; + +-- +-- Dumping data for table `sub_categories` +-- + +INSERT INTO `sub_categories` (`id`, `category_id`, `sub_category_title`, `sub_category_img`, `created_date`) VALUES +(417, 371, 'Противоаллергические таблетки ', 'assets/images/ProductImage/category/20231207041242000000.png', '2023-12-07 16:30:42'), +(420, 373, 'Мультивитаминные Комплексы ', 'assets/images/ProductImage/category/20231207041227000000.png', '2023-12-07 16:35:51'), +(421, 373, 'Витамин С ', 'assets/images/ProductImage/category/20231207041221000000.png', '2023-12-07 16:37:21'), +(422, 373, 'Витамин Д ', 'assets/images/ProductImage/category/20231207041234000000.png', '2023-12-07 16:37:34'), +(423, 374, 'Мази от Аллергии ', 'assets/images/ProductImage/category/20231207041257000000.png', '2023-12-07 16:39:57'), +(424, 374, 'Противогрибковые Кремы ', 'assets/images/ProductImage/category/20231207041249000000.png', '2023-12-07 16:40:49'), +(425, 375, 'Капли для Улучшения Зрения ', 'assets/images/ProductImage/category/20231207041243000000.png', '2023-12-07 16:42:43'), +(426, 375, 'Капли для Лечения Глазных Инфекций ', 'assets/images/ProductImage/category/20231207041257000000.png', '2023-12-07 16:45:57'), +(427, 376, 'Вакцинационные Уколы', 'assets/images/ProductImage/category/20231207041238000000.png', '2023-12-07 16:47:38'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `users` +-- + +CREATE TABLE `users` ( + `id` int(11) NOT NULL, + `name` varchar(100) DEFAULT NULL, + `area` varchar(100) DEFAULT NULL, + `address` text DEFAULT NULL, + `state` varchar(100) DEFAULT NULL, + `city` varchar(100) DEFAULT NULL, + `zip` varchar(11) DEFAULT NULL, + `mobile` varchar(30) DEFAULT NULL, + `email` varchar(100) DEFAULT NULL, + `password` text NOT NULL, + `reset_code` varchar(6) DEFAULT NULL, + `firebase_token` text DEFAULT NULL, + `otp` int(6) DEFAULT NULL, + `verified` tinyint(1) NOT NULL DEFAULT 0, + `token` text DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + +-- +-- Dumping data for table `users` +-- + +INSERT INTO `users` (`id`, `name`, `area`, `address`, `state`, `city`, `zip`, `mobile`, `email`, `password`, `reset_code`, `firebase_token`, `otp`, `verified`, `token`) VALUES +(435, 'P', NULL, NULL, NULL, NULL, NULL, '888', NULL, '46b09f79db8c6c5531756e39860cfd41fa1b311104f1a416e0c6397a93e63059', NULL, NULL, 526895, 0, '79ad52a93fbb139178cb6c1afbecc6b1'), +(436, 'P', NULL, NULL, NULL, NULL, NULL, '0378507207', NULL, '891e12e156d8c6609c6d5f3e04b2fc8da6d9ff3d7e9f906314c0909da69637eb', NULL, NULL, 382742, 0, '8f6e1b92320ceb28176ba750d174e5da'), +(437, 'phong đang code', NULL, NULL, NULL, NULL, NULL, '84378507207', NULL, '1c20e554c167a011867d10fc75fe04c246c7f5ba8b38386de8625bbb247dd905', NULL, NULL, 265180, 0, '9ab91ed4436aa50ca568b3ff2ac2ac97'), +(438, 'code', NULL, NULL, NULL, NULL, NULL, '84378507205', NULL, '1c20e554c167a011867d10fc75fe04c246c7f5ba8b38386de8625bbb247dd905', NULL, NULL, 596949, 0, '6a52a7e9b4c1d5587f637eae7aa06bf2'), +(439, 'test', NULL, NULL, NULL, NULL, NULL, '+84342473443', NULL, '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, NULL, 911776, 0, '9322146799289da446aa5700b9c50919'), +(440, 'wl', NULL, NULL, NULL, NULL, NULL, '0342473443', NULL, '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, NULL, NULL, 1, '144d1b7baec791b78b662b460b841936'), +(441, 'Edilberto ', NULL, NULL, NULL, NULL, NULL, '964040652', NULL, '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, 'f46d_JMnQ26LbQVyo1IcdB:APA91bEHIaVXwUlYinGwrdp0wK2O4cpjHzIQDcliTAYfpzTy8Y5Z_BljeLJZ19X7D_BrAHKwzRAgUAkgC1l8QpzvXJlkizF2prlntEjPNQcwD90N017UO5jbkibYUHAV94iLpnBHuGjz', 493722, 0, '79f962c67d57e1e8458f0a2229db125e'), +(442, 'Duong Nguyen', NULL, NULL, NULL, NULL, NULL, '0975962538', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, 'd1vyKqQRQJ6mF1nOcEWHr1:APA91bGyBcRCKRBTAhTFux214xBVdJJ_mFHEVccyu2MXtybrq8TTglu93eST1XPXDoS6KCNluv88hhkR-60DW2FeRXWnMgXqg-_bIACgwJBnrACcD3B4rLRROnp5d_jEugydxXrkZKGS', 341812, 0, 'f91bc1ee30a230e5a9f6fe1024ff69df'), +(443, 'dương', NULL, NULL, NULL, NULL, NULL, '0968659255', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, NULL, 566358, 0, 'c9346949dbea7ac32a03a220fff550eb'), +(444, 'Riya Solanki', NULL, NULL, NULL, NULL, NULL, '6352639252', NULL, 'bdba1d66e01f601b5fbb4cc0e0480d31fee9888e30ffbed3b7e024af29255ed7', NULL, 'dU7cpCobSPKwoxoobj0UP0:APA91bHZevzWXevoE-8ryV0EGEVlCr_On5wSc3nLKVpQCzOaTA9X3WQAIW3UmVKydCGirsNy_5gwYgoiS6CvCgCcMiKomLnzmNREswmVTgjCJjAxwWy-sxLn_4vpUwyWtlWv0IUi_tMf', 724918, 0, '8e293c3b57b08fc433941e2ccc3183ef'), +(445, 'Shweta', NULL, NULL, NULL, NULL, NULL, '7600199913', NULL, 'ddac0a0f3b960ec55a9eb2487d27a3f143a4bdad85fd069effe18cf4a65c4375', '215000', 'f1cbMWmpQuamke5HviOzkf:APA91bFDxA9sSfYdc8aXxCOMd1-muhZ7MmIASh3KIChh4GAFUYkoBujowRVHrDNomVpi2wPc0ltCkxB4iCZuPNJFY7oJpRHXzAQTQvJKgYyj84KEoH6HD4L3OBaolLu8FpnqM4p-tE4x', NULL, 1, '8a480ce31871eccc9d8a21ae01aa08c8'), +(446, 'Ratilal Vachhani', NULL, NULL, NULL, NULL, NULL, '9898297753', NULL, 'dd565468526aab70fa72dcf1930bc5d8dea3c6ed82700f1d60d815b57212d576', NULL, 'c4Hj5Q7NQq6hy3neD8DMkI:APA91bGI2PROknkla7A97BqOtlZUMnwlQK439IfeiHEjgEw9okqZs5staXyfgMhh9HA-CE1BSFkBvZ-sS3-gi0_5vnE5ijgFiQjJ9DBxnrPmNbVQ-bwOGwtaKiMDdLsBHl64_OxJN4aF', NULL, 1, '0f71da62dee4b23d88d05659cf824b1d'), +(447, 'Meet Vachhani', NULL, NULL, NULL, NULL, NULL, '7096454457', NULL, '9119b4fd5801f27d28b72f8efd3c51cf3341f47bf46ca6774d4bc1b5374582b3', NULL, 'f1cbMWmpQuamke5HviOzkf:APA91bFDxA9sSfYdc8aXxCOMd1-muhZ7MmIASh3KIChh4GAFUYkoBujowRVHrDNomVpi2wPc0ltCkxB4iCZuPNJFY7oJpRHXzAQTQvJKgYyj84KEoH6HD4L3OBaolLu8FpnqM4p-tE4x', NULL, 1, 'bad7c5599826f7a0f894f02c25ef7da2'), +(448, 'Alikhan Zhumagulov', NULL, NULL, NULL, NULL, NULL, '7777777', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, 'cCyMpA05SE-JwbnalFTooD:APA91bHBsn9jh_nFMcbICGyZrWMO_HzLAZJxHKn1JC2Vx7fKh1eciPeZ-tNIXLdesy0nuR9-yWlQ3xWaLSUMtWNBEJXvoqmDYYmQq6HuS4jXPFuUMcNLrO5jZuMc4-da6s4zZ4pQBsOV', 674915, 0, '37c3add53fa43ab314936dd42e9a440b'), +(449, 'Likh', NULL, NULL, NULL, NULL, NULL, '8708375033', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, 'cCyMpA05SE-JwbnalFTooD:APA91bHBsn9jh_nFMcbICGyZrWMO_HzLAZJxHKn1JC2Vx7fKh1eciPeZ-tNIXLdesy0nuR9-yWlQ3xWaLSUMtWNBEJXvoqmDYYmQq6HuS4jXPFuUMcNLrO5jZuMc4-da6s4zZ4pQBsOV', 700507, 0, 'df006083f6c1cfbf80a8b0f929943235'), +(450, 'Alikhan', NULL, NULL, NULL, NULL, NULL, '1234567', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, 'cCyMpA05SE-JwbnalFTooD:APA91bHBsn9jh_nFMcbICGyZrWMO_HzLAZJxHKn1JC2Vx7fKh1eciPeZ-tNIXLdesy0nuR9-yWlQ3xWaLSUMtWNBEJXvoqmDYYmQq6HuS4jXPFuUMcNLrO5jZuMc4-da6s4zZ4pQBsOV', 822829, 0, '54a4cc04c1bbfc00081dbe02fb3df2d3'), +(451, 'Alikhan Zhumagulov', NULL, NULL, NULL, NULL, NULL, '7083750334', NULL, '5a7a02a266337be44882432e52527e45d0eedd0637d363e09b3bb4a2cca90d73', NULL, 'cCyMpA05SE-JwbnalFTooD:APA91bHBsn9jh_nFMcbICGyZrWMO_HzLAZJxHKn1JC2Vx7fKh1eciPeZ-tNIXLdesy0nuR9-yWlQ3xWaLSUMtWNBEJXvoqmDYYmQq6HuS4jXPFuUMcNLrO5jZuMc4-da6s4zZ4pQBsOV', NULL, 1, '48dab6c2878f6b7b5cc0f6d2889ac0c7'), +(452, 'Alikhan Zhumagulov', NULL, '1234', 'Andaman and Nicobar Islands', 'Port Blair', '8458', '7083750337', NULL, '8bb0cf6eb9b17d0f7d22b456f121257dc1254e1f01665370476383ea776df414', NULL, 'cCyMpA05SE-JwbnalFTooD:APA91bHBsn9jh_nFMcbICGyZrWMO_HzLAZJxHKn1JC2Vx7fKh1eciPeZ-tNIXLdesy0nuR9-yWlQ3xWaLSUMtWNBEJXvoqmDYYmQq6HuS4jXPFuUMcNLrO5jZuMc4-da6s4zZ4pQBsOV', NULL, 1, 'f72b175dd9de1881446ccbb6dae58641'), +(453, 'phong đang demo', NULL, NULL, NULL, NULL, NULL, '+17605178389', NULL, '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, NULL, 868428, 0, 'd2d6053c43056dec66a723d1646badf5'), +(454, 'Test User', NULL, 'Jama Masjid, Dehuroad', 'Delhi', 'Delhi', '412104', '9876598765', NULL, '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8', NULL, NULL, NULL, 1, '3c82755ecf927001f9c66378477d6b7b'), +(455, '2', NULL, NULL, NULL, NULL, NULL, '1301', NULL, '8de0b3c47f112c59745f717a626932264c422a7563954872e237b223af4ad643', NULL, NULL, 995763, 0, '05f880c4397f004c2de1e366cb30ca7b'), +(456, 'Ganesh Santosh Bhagat', NULL, NULL, NULL, NULL, NULL, '7028480455', NULL, 'e86f78a8a3caf0b60d8e74e5942aa6d86dc150cd3c03338aef25b7d2d7e3acc7', NULL, 'd_AmL-NURDa3XaC5NmOE8U:APA91bG4fnPveTBMQYGPJp8ZMUYIyWmh9_j58mmpscIr4K_Q6sSeZDX0vuFah6HpqSFO0bwnmJL5SDw3JslpiXr3_LOWlIUJMtio6Y-xtU1c0lbo8dIfXZNLtxoUeLIYnbPrHDBdZhwo', NULL, 1, '042aebd8f04225e011a108be246bbfb3'), +(457, 'Najim Ahmed', NULL, 'aaa', 'West Bengal', 'Kolkata', '2222', '1829304414', NULL, 'ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f', NULL, 'eJ2PiUOhSha9jGpIUQzLWs:APA91bFRlU30fRpsRvO8WUhCn-eV1qUcmaA2lxY7GXjf1vy6yclTow30rsnB4XvigIsGWcbT9jTUfa7l0jOCSwZIU4XK7KxelBNyJCokuDWXHVPIMyvVoIKkCdo-yUeNz9aA5umdjkFg', NULL, 1, '95deef750a0efb9441d9c10d3acb4d9c'), +(458, 'Admin', NULL, NULL, NULL, NULL, NULL, '7471373002', NULL, '5fd088669bf323fc8b39b6bca1e75620b0784e7626b22e56bd4358083461b747', NULL, 'esn52Rw5QU67EWd28FTe_F:APA91bGj_qVHwB83w4mCSh4W1NNTCec7VTQ1COb2ePlG3Ileh3ETciT6V_FbCLGeVuousCuARa_OTS7VZ3z-umnR-4yHXhcalvFsIxhdwN1wyTg36NMTzm_TPfW1pOxx-HkmR3wQlT-d', 896105, 0, 'c66988bb024a80a7d0959751aa1ac71a'), +(459, 'Zhandos', NULL, NULL, NULL, NULL, NULL, '7478518903', NULL, '5fd088669bf323fc8b39b6bca1e75620b0784e7626b22e56bd4358083461b747', NULL, 'esn52Rw5QU67EWd28FTe_F:APA91bGj_qVHwB83w4mCSh4W1NNTCec7VTQ1COb2ePlG3Ileh3ETciT6V_FbCLGeVuousCuARa_OTS7VZ3z-umnR-4yHXhcalvFsIxhdwN1wyTg36NMTzm_TPfW1pOxx-HkmR3wQlT-d', 517846, 0, '4668037b324df428676471106f6ae44b'), +(460, 'Zhandoss', NULL, NULL, NULL, NULL, NULL, '7473738747', NULL, '6ae9c6789a5bb44a43a8bb1f88a6974d02c216cb1ef0b87a52a3106e15bfc153', NULL, 'esn52Rw5QU67EWd28FTe_F:APA91bGj_qVHwB83w4mCSh4W1NNTCec7VTQ1COb2ePlG3Ileh3ETciT6V_FbCLGeVuousCuARa_OTS7VZ3z-umnR-4yHXhcalvFsIxhdwN1wyTg36NMTzm_TPfW1pOxx-HkmR3wQlT-d', NULL, 1, '3a15ae0a9bc8576eedf9f7e3f0487ff2'), +(461, 'ayat BD24', NULL, NULL, NULL, NULL, NULL, '01329564921', NULL, '971335240057a222d2c160e56d7be712531be806aac6010f444c922abdd8ebeb', NULL, 'cVX8eQ-7RmauMVkCABF9zk:APA91bF8TH5BqQ8qe7H0Oot0j4_JUZqWXQhI90aIDcgdw4dWJ2e2J7_fnvzj7T1Vb_i3Ny83Py2grSFJThyHiE_IHefvixtHAmzvHFJ_xUiaLM0o1E7InPIWgAGNTaIpuR3xSMW1ppPD', 797130, 0, 'f13bc68194a36539629c4527bd72abf7'), +(462, 'Mdsahine', NULL, NULL, NULL, NULL, NULL, '01928223032', NULL, '971335240057a222d2c160e56d7be712531be806aac6010f444c922abdd8ebeb', NULL, 'fsfhyzDARkmk_EXWZARoRs:APA91bHj7I03aRaGlnTrexvz0UnbDtFzIyk_dLSyppCmNJJf9-T0VG1bCZ7bME8rB-gM2lKRR6zX752GuBmgW6Cb8uND_d8x3X5t_0eNEq1RdUphjJFZpSyJ1BOCaAviMV1v6zCbj3Sk', 346213, 0, '69807efe51e99ef32ffad2e8c0d1e704'), +(463, 'test', NULL, NULL, NULL, NULL, NULL, '98885555', NULL, 'ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae', NULL, NULL, 837281, 0, '8cbaf4fadea4fbf2561b771379d8d717'), +(464, 'test', NULL, NULL, NULL, NULL, NULL, '3213415064', NULL, 'ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae', NULL, NULL, NULL, 1, '58f75c9bb612a052855b9b12e76bc72a'), +(465, 'frequent actions', NULL, NULL, NULL, NULL, NULL, '0606060606', NULL, '708e3b91facc265a61b405cdf48f51368d4fd94c597e11acfce8e76c0b093b5a', NULL, NULL, 710116, 0, 'e6f2921ae6a359b164ca3fb1626f706a'), +(466, 'Frequent ACTIONS ', NULL, NULL, NULL, NULL, NULL, '0632771881', NULL, 'e606c5c703f66f269e085b70c458e062b394e9750de7b6622d23196a2ccb831a', NULL, NULL, 467000, 0, '29caaf33735f9aecd7a7af82bb72f75e'), +(467, NULL, NULL, NULL, NULL, NULL, NULL, '0772267021', NULL, 'e654ea3b4386e6422ff003dc3238a3c44693c1bb5ba954ba16767dd34658aee5', NULL, 'fTmBFQ5OTqaEjtrw4ThpD5:APA91bGoWlxt_ROv5p4820OeeUMNEg7viP_un3NYWnyLBUFo4iE-uN7zgfqs6Za0hfqfWcukiyitifNjkS5l6OZlI8Hg6qB7-5JDJxGokMc8LLQ1luXgaIrIKLeLp7RsipsTS5tbpk-R', 144149, 0, '248deb468891f66d26363b2f54199317'), +(468, 'Nhan', NULL, NULL, NULL, NULL, NULL, '0375539897', NULL, '6460662e217c7a9f899208dd70a2c28abdea42f128666a9b78e6c0c064846493', NULL, NULL, NULL, 1, 'cc6ffdcf91784956a2dcad7a6dc9f1de'), +(469, 'Huu Nhan', NULL, NULL, NULL, NULL, NULL, '0358788246', NULL, '15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225', NULL, 'fCQawUnkTsSGmNiEBBTbda:APA91bHasp0tJqcJh3JWv3yoipYt6d_qfFRRWwKscAGWfszGlcuO-2Lr9qu8sYbqBEQ6iI8XSBZZ8qgijkjti4lkbZrxDnC47M0LpjVjt1f2evpYO2ndKA4VpIeDcXNUJjnOrbHvRkeO', 321040, 0, 'c94a94ed08ec454a47a373554fa14494'), +(470, 'Huu Nhan', NULL, NULL, NULL, NULL, NULL, '8458788246', NULL, '15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225', NULL, 'fCQawUnkTsSGmNiEBBTbda:APA91bHasp0tJqcJh3JWv3yoipYt6d_qfFRRWwKscAGWfszGlcuO-2Lr9qu8sYbqBEQ6iI8XSBZZ8qgijkjti4lkbZrxDnC47M0LpjVjt1f2evpYO2ndKA4VpIeDcXNUJjnOrbHvRkeO', 794902, 0, '74446eab19ab481d0a566637f4ba6980'), +(471, 'Register', NULL, NULL, NULL, NULL, NULL, '0632778118', NULL, 'b427f6595a00964aac8310674d27fe1822565ab8b5a3b9ad253d7644a4e1fd77', NULL, NULL, 448072, 0, 'a9bc61947d94ee94e6fa2f8ab3197976'), +(472, 'nhan', NULL, NULL, NULL, NULL, NULL, '113', NULL, '9e4633d8746b59a6aec1c82f2f7c49fc3e49ac70b6b3803f96752dff8c481af2', NULL, 'c2RaVqk7SGil50RqI8rOLY:APA91bHnVbMsOdfbeUHoUYbZ08_3bi9LyzKGIh0LIGBzzrDrD4rP7_CqhnK6ulkyZU46EW9Nc2_rBMC6f2TTxkGdKCHmQVl8UFsTI5l5Wz_Qgkos_zNNdC-LU1l8ZFDnFrkVP0_9fq6K', 162630, 0, '1703eb2365a968f120d90be95b9a70d0'), +(473, 'nhan', NULL, NULL, NULL, NULL, NULL, '0764450235', NULL, '0def43e1863f87ecc97904cd6b67c6f6db92b49244b6953b35b2a3a368ae8cc1', NULL, 'euxAKwwcQeuT4ztJUyXFP_:APA91bFFUtyPfVnZpGSO-1dSsZQ1B185VCH7Jtu8J1rAcphiYir4d4C3xWPyPjxGQIMx12ccogz8gGKJVQmoTI8naI6xsWfX5K0isnAY66ccA3tE1sgw49U4uAOD7yWJcpjKnyGOs31p', NULL, 1, '05376ee659bc63cef35f45d74f6459fa'), +(474, 'Sumeet Gurupadappa Bangarkinagi', NULL, 'zfrw', 'Delhi', 'Delhi', '122', '6362625797', NULL, 'c7bd6c48d5a3f27aa0162745d59a441c6a04e3262c6080ba368426684e38e31b', NULL, NULL, NULL, 1, 'd2116a35893aac0f7aaa4e5bcd810ea6'), +(475, 'Kiddo', NULL, NULL, NULL, NULL, NULL, '012345798', NULL, '15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225', NULL, 'dIzCODwGSLGu-8W8JdVuah:APA91bHSkztGv77Ovvdlsf6kVjl7JnW0u0kddc4My0lGl4NLXfDFzQmX-7fjLqhaRCPOB-Co7NcDLgAd_1BTv5NNYyEldyPieScnxPFEE0cSE-Q5g946v2-IxVCHWuHfDFf72qfp2IqY', 294891, 0, 'c7f8c40236cb7f09430ec52a9bac0c58'), +(476, 'Kiddo', NULL, '555', 'Andaman and Nicobar Islands', 'Port Blair', '555', '0123456789', NULL, '84d89877f0d4041efb6bf91a16f0248f2fd573e6af05c19f96bedb9f882f7882', NULL, 'f3AikuZlRi2VYfhFzwEFsZ:APA91bGdRxO-6G0s5QciaHOyfuXwQDhYDxZwc0EDFEVVvRq1dsBibt3dGD3GdPecun1I_f7cDq2p3xQ1eH7k5NKAXcsqchsbCOt8Qhh6Kx7w4T4c5AbEN2wORvAf6Ku9eB-T-58rRJ6J', NULL, 1, '75c43c000ceb63872c2615c396235a40'), +(477, 'David Nguyen', NULL, '5555', 'Meghalaya', 'Nongstoin', '0333', '0312345678', NULL, '8234087075ee36465f289ee759ba6e4a497629efa40817741faacc56e766d265', NULL, 'f3AikuZlRi2VYfhFzwEFsZ:APA91bGdRxO-6G0s5QciaHOyfuXwQDhYDxZwc0EDFEVVvRq1dsBibt3dGD3GdPecun1I_f7cDq2p3xQ1eH7k5NKAXcsqchsbCOt8Qhh6Kx7w4T4c5AbEN2wORvAf6Ku9eB-T-58rRJ6J', NULL, 1, '6928c37dc3c1c75e9aedad3a3c6e452e'); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `admin` +-- +ALTER TABLE `admin` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `banners` +-- +ALTER TABLE `banners` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `bill_payment` +-- +ALTER TABLE `bill_payment` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `cart` +-- +ALTER TABLE `cart` + ADD PRIMARY KEY (`id`), + ADD KEY `product_id` (`product_id`), + ADD KEY `user_id` (`user_id`); + +-- +-- Indexes for table `categories` +-- +ALTER TABLE `categories` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `items` +-- +ALTER TABLE `items` + ADD PRIMARY KEY (`id`), + ADD KEY `category_id` (`category_id`), + ADD KEY `sub_category_id` (`sub_category_id`); + +-- +-- Indexes for table `notification` +-- +ALTER TABLE `notification` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `offers` +-- +ALTER TABLE `offers` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `orderlist` +-- +ALTER TABLE `orderlist` + ADD PRIMARY KEY (`id`), + ADD KEY `order_id` (`order_id`); + +-- +-- Indexes for table `orders` +-- +ALTER TABLE `orders` + ADD PRIMARY KEY (`id`), + ADD KEY `orders_ibfk_1` (`user_id`); + +-- +-- Indexes for table `payment` +-- +ALTER TABLE `payment` + ADD PRIMARY KEY (`id`), + ADD KEY `order_id` (`order_id`), + ADD KEY `user_id` (`user_id`); + +-- +-- Indexes for table `prescription` +-- +ALTER TABLE `prescription` + ADD PRIMARY KEY (`id`), + ADD KEY `user_id` (`user_id`); + +-- +-- Indexes for table `product_image` +-- +ALTER TABLE `product_image` + ADD PRIMARY KEY (`id`), + ADD KEY `product_image_ibfk_1` (`item_id`); + +-- +-- Indexes for table `sub_categories` +-- +ALTER TABLE `sub_categories` + ADD PRIMARY KEY (`id`), + ADD KEY `category_id` (`category_id`); + +-- +-- Indexes for table `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `mobile` (`mobile`), + ADD UNIQUE KEY `email` (`email`), + ADD KEY `mobile_2` (`mobile`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `admin` +-- +ALTER TABLE `admin` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT for table `banners` +-- +ALTER TABLE `banners` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=38; + +-- +-- AUTO_INCREMENT for table `bill_payment` +-- +ALTER TABLE `bill_payment` + MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- AUTO_INCREMENT for table `cart` +-- +ALTER TABLE `cart` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=105; + +-- +-- AUTO_INCREMENT for table `categories` +-- +ALTER TABLE `categories` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=381; + +-- +-- AUTO_INCREMENT for table `items` +-- +ALTER TABLE `items` + MODIFY `id` int(100) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1145; + +-- +-- AUTO_INCREMENT for table `notification` +-- +ALTER TABLE `notification` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=84; + +-- +-- AUTO_INCREMENT for table `offers` +-- +ALTER TABLE `offers` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22; + +-- +-- AUTO_INCREMENT for table `orderlist` +-- +ALTER TABLE `orderlist` + MODIFY `id` int(50) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=483; + +-- +-- AUTO_INCREMENT for table `orders` +-- +ALTER TABLE `orders` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=133; + +-- +-- AUTO_INCREMENT for table `payment` +-- +ALTER TABLE `payment` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=45; + +-- +-- AUTO_INCREMENT for table `prescription` +-- +ALTER TABLE `prescription` + MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=33; + +-- +-- AUTO_INCREMENT for table `product_image` +-- +ALTER TABLE `product_image` + MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=93; + +-- +-- AUTO_INCREMENT for table `sub_categories` +-- +ALTER TABLE `sub_categories` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=431; + +-- +-- AUTO_INCREMENT for table `users` +-- +ALTER TABLE `users` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=478; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `cart` +-- +ALTER TABLE `cart` + ADD CONSTRAINT `cart_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `items` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `cart_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `items` +-- +ALTER TABLE `items` + ADD CONSTRAINT `items_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `items_ibfk_2` FOREIGN KEY (`sub_category_id`) REFERENCES `sub_categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `orderlist` +-- +ALTER TABLE `orderlist` + ADD CONSTRAINT `orderlist_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `orders` +-- +ALTER TABLE `orders` + ADD CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `payment` +-- +ALTER TABLE `payment` + ADD CONSTRAINT `payment_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `payment_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `prescription` +-- +ALTER TABLE `prescription` + ADD CONSTRAINT `prescription_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `product_image` +-- +ALTER TABLE `product_image` + ADD CONSTRAINT `product_image_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `items` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `sub_categories` +-- +ALTER TABLE `sub_categories` + ADD CONSTRAINT `sub_categories_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/PHP-SourceCode/index.html b/PHP-SourceCode/index.html new file mode 100644 index 0000000..1bd3080 --- /dev/null +++ b/PHP-SourceCode/index.html @@ -0,0 +1,1141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Drug Store - Medical, Health Care and Doctor Clinic Template + + + +
        +
        +
        +
        +
        +
        +
        +
        +
        + + + + + +
        +
        +
        +
        +
        +
        +
        +
        +

        Providing Quality Health Care. Your Health is Our Top Priority with Comprehensive

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + Appointment Now +
        +
        +

        Providing Quality Health Care. Your Health is Our Top Priority with Comprehensive

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + Appointment Now +
        +
        +

        Providing Quality Health Care. Your Health is Our Top Priority with Comprehensive

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + Appointment Now +
        +
        +
        +
        +
        + hero +
        +
        +
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        + +

        Qualified Doctors

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + +

        Emergency Care

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + +

        Operation Theater

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + +

        24 Hours Service

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +
        +
        + about +
        +
        +
        +
        + about +
        +
        +
        +
        + about +
        +
        +
        +
        + about +
        +
        +
        +
        +
        +
        +

        Why Choose Us

        + Read About Us +
        +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum ultrices gravida. Risus commodo viverra maecenas accumsan facilisis.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
          +
        • We provide high-quality services for the whole family.
        • +
        • Risus commodo viverra maecenas
        • +
        • Your health is our top priority
        • +
        • Affordable medical, dental and women's health care.
        • +
        • Quis ipsum suspendisse ultrices gravida.
        • +
        • We provide high-quality services for the whole family.
        • +
        + Our Work +
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +

        Who We Are

        + Meet the Entire Doctor +
        +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan facilisis.

        + Appointment Now +
        +
        +
        +
          +
        • +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
        • +
        • +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
        • +
        • +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
          +
          + doctor +
          +

          DR. John Doe

          +

          Dental Specialist

          +
            +
          • +
          • +
          • +
          +
          +
          +
          +
        • +
        +
        +
        +
        +
        + + +
        +
        +
        +

        Our Departments

        + Which Services We Provide +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Cardiology Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Neurology Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Orthopedics Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Radiology Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Surgery Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        + department +
        +
        +
        +
        +

        Welcome to Urology Department

        +

        This department provides medical care to patients who have problems with their heart or circulation. It treats people on an inpatient and outpatient basis.

        +
          +
        • Electrocardiogram (ECG)
        • +
        • Echocardiograms (ultrasound scan of the heart)
        • +
        • 24-hour blood pressure tests
        • +
        • Electrocardiogram (ECG)
        • +
        + Appointment Now +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +

        Make an Appointment

        + Visit Your Primary Care Physician +
        +
        +
          +
        • + What is dental care? +

          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse.

          +
        • +
        • + What is dental care? +

          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse.

          +
        • +
        • + What is dental care? +

          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse.

          +
        • +
        +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + + +
        +
        +
        +
        + +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        + + +
        +
        +
        +

        Our Services

        + Which Services We Provide +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + +

        Plastic Surgery

        +

        Our talented, board-certified and fellowship-trained plastic surgeons have more than 42 years of combined experience helping patients look and feel their best.

        + +
        +
        +
        +
        + +

        Breast Screening

        +

        Our talented, board-certified and fellowship-trained plastic surgeons have more than 42 years of combined experience helping patients look and feel their best.

        + +
        +
        +
        +
        + +

        Nutrition and Dietetics

        +

        Our talented, board-certified and fellowship-trained plastic surgeons have more than 42 years of combined experience helping patients look and feel their best.

        + +
        +
        +
        +
        + +

        Occupational Therapy

        +

        Our talented, board-certified and fellowship-trained plastic surgeons have more than 42 years of combined experience helping patients look and feel their best.

        + +
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        + +

        25000

        + Happy Patients +
        +
        +
        +
        + +

        180

        + Experienced Doctors +
        +
        +
        +
        + +

        1200

        + Successful Operations +
        +
        +
        +
        + +

        2800

        + Number of Beds +
        +
        +
        +
        +
        + + + + + +
        +
        +
        +

        Our Pricing

        + Our Best Price Offer +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        +
        +

        Blood Test

        +
        +
        + $145 +
        +
        +
          +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        • Kidney function tests
        • +
        • C-reactive protein (CRP) test
        • +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        +
        + +
        +
        +
        +
        +
        +

        Body CT Scan

        +
        +
        + $350 +
        +
        +
          +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        • Kidney function tests
        • +
        • C-reactive protein (CRP) test
        • +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        +
        + +
        +
        +
        +
        +
        +

        Urine Test

        +
        + +
        + $125 +
        +
        +
          +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        • Kidney function tests
        • +
        • C-reactive protein (CRP) test
        • +
        • Cholesterol and lipid tests
        • +
        • Oestrogen blood test
        • +
        • Thyroid function tests
        • +
        +
        + +
        +
        +
        +
        +
        + + +
        +
        +
        +

        Testimonials

        + Our Patient Feedback +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        +
        + client +
        +

        Josh Buttler

        + Web Developer +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        + +
        +
        +
        +
        +
        + + +
        +
        +
        +

        Latest News

        + Our Latest News & Tips +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        +
        +
        +
        +
        + blog +
        +

        Risus commodo viverra maecenas accumsan lacus vel facilisis.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        + Read More +
        +
        +
        +
        +
        + blog +
        +

        Risus commodo viverra maecenas accumsan lacus vel facilisis.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        + Read More +
        +
        +
        +
        +
        + blog +
        +

        Risus commodo viverra maecenas accumsan lacus vel facilisis.

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

        + Read More +
        +
        +
        +
        +
        +
        + + +
        +
        +
        + + +
        +
        +

        Phone

        +

        +44 4587 458

        +

        +44 4587 459

        +
        +
        +
        +
        +

        Opening Hours

        +
          +
        • Monday - Friday 6AM - 9PM
        • +
        • Sunday 6AM - 5PM
        • +
        +
        +
        +
        +
        +

        Get in Touch

        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Risus commodo viverra maecenas accumsan lacus vel facilisis.

        +
          +
        • +
        • +
        • +
        • +
        +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +
        +
        +
        + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PHP-SourceCode/sc/1.PNG b/PHP-SourceCode/sc/1.PNG new file mode 100644 index 0000000..14b222f Binary files /dev/null and b/PHP-SourceCode/sc/1.PNG differ diff --git a/PHP-SourceCode/sc/2.PNG b/PHP-SourceCode/sc/2.PNG new file mode 100644 index 0000000..349bb36 Binary files /dev/null and b/PHP-SourceCode/sc/2.PNG differ diff --git a/PHP-SourceCode/sc/3.PNG b/PHP-SourceCode/sc/3.PNG new file mode 100644 index 0000000..42b4d80 Binary files /dev/null and b/PHP-SourceCode/sc/3.PNG differ diff --git a/PHP-SourceCode/sc/4.PNG b/PHP-SourceCode/sc/4.PNG new file mode 100644 index 0000000..10b11e8 Binary files /dev/null and b/PHP-SourceCode/sc/4.PNG differ diff --git a/PHP-SourceCode/view.gif b/PHP-SourceCode/view.gif new file mode 100644 index 0000000..9d5acd3 Binary files /dev/null and b/PHP-SourceCode/view.gif differ diff --git a/README.md b/README.md index 8e8bb68..fc75681 100644 --- a/README.md +++ b/README.md @@ -1 +1,91 @@ -Drug Store +# DrugStore + + + +DrugStore - Android app is the client side app for ordering medicines. +It is free and open source. +DrugStore for Android is a companion app for [Drugstore Web](https://drugstore.frontendsourcecode.com/). +DrugStore WebApp is for administration of orders on the admin(DrugStore) side. + + + +## About + +With this app, customers can order medicines from the pharmacy it is connected to. +The pharmacy has to host the companion administration web-app [Drugstore Web](https://drugstore.frontendsourcecode.com/). + + +## Admin Details + +[Admin Panel](https://drugstore.frontendsourcecode.com/) + +UserName: Admin + +Password: Admin@2020 + +OTP For Android Verification: 000000 + +## Admin Panel Setup + +- Download Xampp 7.4 [Xampp](https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.4.33/xampp-windows-x64-7.4.33-0-VC15-installer.exe/download) +- Install Xampp +- Run Xampp Control Panel +- Start Apache & MySql +- Go to http://localhost/phpmyadmin/ +- Upload Php Files in to xampp/htdocs folder +- Import Data base from PHP-SourceCode/drugstore.sql +- Update Config File In PHP-SourceCode/admin/includes/config.php & PHP-SourceCode/api/v1/config.php +- Start Your Website http://localhost/yourfoldername +- For Android Integration http://yourvIP4Address/yourfoldername/api/v1/ + +## Features +The android app lets you: +- Authenticate via phone and password. +- Super simple sign up process with auto verification of OTP. +- Completely ad-free. +- Material Design. +- Specify medicine names. +- Or take picture of prescription and order. +- Realtime update. +- Update minimum order value in realtime. +- Block specific users from ordering. +- Multiple order statuses. +- Push notification to notifiy order status change. + + + +## Screenshots + +| Splash | Login | Register | +| ------ | ---- | ------ | +|||| + +| Home | Category | Detail | +| ------ | ---- | ------ | +|||| + +| Products | Cart | Checkout | +| ------ | ---- | ------ | +|||| + +| Order | Order Details | Prescription | +| ------ | ---- | ------ | +|||| + + +## Permissions + +On Android versions prior to Android 6.0, pharmrmacy android requires the following permissions: +- Full Network Access. +- Read and write access to external storage - To access prescription images +- Camera access - To capture image of prescription +- Receive sms - To access OTP code and verify automatically + +## Contributing +You are free to use and modify the app. + + +## License + +This application is released under GNU GPLv3 (see [LICENSE](LICENSE)). +Some of the used libraries are released under different licenses. diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index d85189f..0000000 --- a/app/build.gradle +++ /dev/null @@ -1,65 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 30 - buildToolsVersion "30.0.2" - defaultConfig { - applicationId "com.quintus.labs.drugstore" - minSdkVersion 19 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - defaultConfig { - vectorDrawables.useSupportLibrary = true - } - compileOptions { - sourceCompatibility 1.8 - targetCompatibility 1.8 - } -} - -allprojects { - repositories { - mavenCentral() - jcenter() - google() // Google's Maven repository - mavenCentral() - maven { url 'https://jitpack.io' } - - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - //noinspection GradleCompatible - implementation 'androidx.appcompat:appcompat:1.0.0' - implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.0.0' - implementation 'com.google.android.material:material:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'com.squareup.picasso:picasso:2.71828' - implementation 'de.hdodenhof:circleimageview:2.2.0' - implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.code.gson:gson:2.8.6' - implementation 'com.squareup.retrofit2:retrofit:2.6.2' - implementation 'com.squareup.retrofit2:converter-gson:2.6.2' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation platform('com.google.firebase:firebase-bom:26.0.0') - implementation 'com.google.firebase:firebase-messaging' - implementation 'com.google.firebase:firebase-analytics' - implementation 'com.github.IamIsPra:Sheriff:1.0.0' - - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' -} -apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json deleted file mode 100644 index f3fa386..0000000 --- a/app/google-services.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "project_info": { - "project_number": "939005084939", - "project_id": "drugstore-76e09", - "storage_bucket": "drugstore-76e09.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:939005084939:android:584e494513e547e71f8e0e", - "android_client_info": { - "package_name": "com.quintus.labs.drugstore" - } - }, - "oauth_client": [ - { - "client_id": "939005084939-jno5hmrrg01gk11k89cjacjlslddkqnf.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.quintus.labs.drugstore", - "certificate_hash": "f03b124cac2f68003a6a1412af29fe207bc54be0" - } - }, - { - "client_id": "939005084939-t897p0npb2mf3stj6oh0kl7bcnd0ll3h.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyArBGvPthMJINDPCwxwMsIxsBMYTC3NwZU" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "939005084939-t897p0npb2mf3stj6oh0kl7bcnd0ll3h.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/app/src/androidTest/java/com/quintus/labs/drugstore/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/quintus/labs/drugstore/ExampleInstrumentedTest.java deleted file mode 100644 index 3dfb203..0000000 --- a/app/src/androidTest/java/com/quintus/labs/drugstore/ExampleInstrumentedTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.quintus.labs.drugstore; - -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - - } -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index 1115c86..0000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index 3b6bac2..0000000 Binary files a/app/src/main/ic_launcher-playstore.png and /dev/null differ diff --git a/app/src/main/java/com/quintus/labs/drugstore/activity/SplashScreen.java b/app/src/main/java/com/quintus/labs/drugstore/activity/SplashScreen.java deleted file mode 100644 index 94388c4..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/activity/SplashScreen.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.quintus.labs.drugstore.activity; - -import androidx.appcompat.app.AppCompatActivity; - -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; - -import com.quintus.labs.drugstore.R; - -public class SplashScreen extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - getSupportActionBar().hide(); - setContentView(R.layout.activity_splash_screen); - - - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - // This method will be executed once the timer is over - - - Intent i = new Intent(getApplicationContext(), WelcomeActivity.class); - startActivity(i); - finish(); - overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); - } - - - }, 3000); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/api/RestService.java b/app/src/main/java/com/quintus/labs/drugstore/api/RestService.java deleted file mode 100644 index 317ce2a..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/api/RestService.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.quintus.labs.drugstore.api; - - -import com.quintus.labs.drugstore.model.Category; -import com.quintus.labs.drugstore.model.CategoryResult; -import com.quintus.labs.drugstore.model.Order; -import com.quintus.labs.drugstore.model.OrderItem; -import com.quintus.labs.drugstore.model.OrdersResult; -import com.quintus.labs.drugstore.model.PlaceOrder; -import com.quintus.labs.drugstore.model.ProductResult; -import com.quintus.labs.drugstore.model.Token; -import com.quintus.labs.drugstore.model.User; -import com.quintus.labs.drugstore.model.UserResult; - -import okhttp3.MultipartBody; -import okhttp3.RequestBody; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Multipart; -import retrofit2.http.POST; -import retrofit2.http.Part; -import retrofit2.http.Path; -import retrofit2.http.Query; - -/** - * RetrofitExample - * https://github.com/quintuslabs/RetrofitExample - * Created on 18-Feb-2019. - * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com - */ - -public interface RestService { - - @POST("api/v1/register") - Call register(@Body User user); - - @POST("api/v1/login") - Call login(@Body User user); - - @POST("api/v1/forgot_password") - Call forgotPassword(@Body User user); - - @POST("api/v1/reset_password") - Call resetPassword(@Body User user); - - @POST("api/v1/allcategory") - Call allCategory(@Body Token token); - - @POST("api/v1/newProduct") - Call newProducts(@Body Token token); - - @POST("api/v1/homepage") - Call popularProducts(@Body Token token); - - @POST("api/v1/getlist") - Call getCategoryProduct(@Body Category category); - - @POST("api/v1/placeorder") - Call confirmPlaceOrder(@Body PlaceOrder placeOrder); - - @Multipart - @POST("api/v1/uploadprescription/{id}") - Call uploadPrescription(@Path("id") String id , @Part MultipartBody.Part prescription); - - - @POST("api/v1/orderDetails") - Call orderDetails(@Body Order order); - - @POST("api/v1/updateUser") - Call updateUser(@Body User user); - - @GET("api/v1/product/search") - Call searchProduct(@Query("s") String search); - - @POST("api/v1/singleOrderDetails") - Call getOrderItems(@Body OrderItem orderItem); -} diff --git a/app/src/main/java/com/quintus/labs/drugstore/firebase/MyFirebaseMessagingService.java b/app/src/main/java/com/quintus/labs/drugstore/firebase/MyFirebaseMessagingService.java deleted file mode 100644 index b3a84a7..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/firebase/MyFirebaseMessagingService.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.quintus.labs.drugstore.firebase; - -import android.content.Context; -import android.content.Intent; -import android.os.Build; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - - -import com.google.android.gms.tasks.OnCompleteListener; -import com.google.android.gms.tasks.Task; -import com.google.firebase.iid.FirebaseInstanceId; -import com.google.firebase.iid.InstanceIdResult; -import com.google.firebase.messaging.FirebaseMessaging; -import com.google.firebase.messaging.FirebaseMessagingService; -import com.google.firebase.messaging.RemoteMessage; -import com.quintus.labs.drugstore.R; -import com.quintus.labs.drugstore.activity.MainActivity; -import com.quintus.labs.drugstore.util.NotificationHelper; -import com.quintus.labs.drugstore.util.NotificationUtils; -import com.quintus.labs.drugstore.util.localstorage.LocalStorage; - -import org.json.JSONException; -import org.json.JSONObject; - -public class MyFirebaseMessagingService extends FirebaseMessagingService { - private static final String TAG = MyFirebaseMessagingService.class.getSimpleName(); - LocalStorage localStorage; - Intent intent; - private NotificationUtils notificationUtils; - - @RequiresApi(api = Build.VERSION_CODES.Q) - @Override - public void onMessageReceived(RemoteMessage remoteMessage) { - Log.e(TAG, "From: " + remoteMessage.getFrom()); - - if (remoteMessage == null) - return; - - // Check if message contains a notification payload. - if (remoteMessage.getNotification() != null) { - Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody()); - handleNotification(remoteMessage.getNotification().getBody()); - } - - // Check if message contains a data payload. - if (remoteMessage.getData().size() > 0) { - Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString()); - - try { - JSONObject json = new JSONObject(remoteMessage.getData().toString()); - handleDataMessage(json); - } catch (Exception e) { - Log.e(TAG, "Exception: " + e.getMessage()); - } - } - } - - - @Override - public void onNewToken(String token) { - FirebaseInstanceId.getInstance().getInstanceId() - .addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - localStorage = new LocalStorage(getApplicationContext()); - if (!task.isSuccessful()) { - Log.w(TAG, "getInstanceId failed", task.getException()); - return; - } - FirebaseMessaging.getInstance().subscribeToTopic("global"); - // Get new Instance ID token - String token = task.getResult().getToken(); - localStorage.setFirebaseToken(token); - // Log and toast - Log.d(TAG, token); - // Toast.makeText(getApplicationContext(), token, Toast.LENGTH_SHORT).show(); - } - }); - - - } - - - @RequiresApi(api = Build.VERSION_CODES.Q) - private void handleNotification(String message) { - if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) { - // app is in foreground, broadcast the push message - Intent pushNotification = new Intent(""); - pushNotification.putExtra("message", message); - LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification); - - // play notification sound - NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext()); - notificationUtils.playNotificationSound(); - } else { - // If the app is in background, firebase itself handles the notification - } - } - - - private void handleDataMessage(JSONObject json) { - Log.e(TAG, "push json: " + json.toString()); - - try { - JSONObject data = json.getJSONObject("data"); - - String title = data.getString("title"); - String message = data.getString("message"); - boolean isBackground = data.getBoolean("is_background"); - String imageUrl = data.getString("image"); - String timestamp = data.getString("timestamp"); - JSONObject payload = data.getJSONObject("payload"); - - Log.e(TAG, "title: " + title); - Log.e(TAG, "message: " + message); - Log.e(TAG, "isBackground: " + isBackground); - Log.e(TAG, "payload: " + payload.toString()); - Log.e(TAG, "imageUrl: " + imageUrl); - Log.e(TAG, "timestamp: " + timestamp); - - NotificationHelper notificationHelper = new NotificationHelper(getApplicationContext()); - intent = new Intent(getApplicationContext(), MainActivity.class); - - - if (imageUrl != null) { - notificationHelper.createNotification(title, message, R.mipmap.ic_launcher, imageUrl, timestamp, intent); - } else { - notificationHelper.createNotification(title, message, timestamp, intent); - } - - } catch (JSONException e) { - Log.e(TAG, "Json Exception: " + e.getMessage()); - } catch (Exception e) { - Log.e(TAG, "Exception: " + e.getMessage()); - } - } - - /** - * Showing notification with text only - */ - private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) { - notificationUtils = new NotificationUtils(context); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - notificationUtils.showNotificationMessage(title, message, timeStamp, intent); - } - - /** - * Showing notification with text and image - */ - private void showNotificationMessageWithBigImage(Context context, String title, String message, String timeStamp, Intent intent, String imageUrl) { - notificationUtils = new NotificationUtils(context); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - notificationUtils.showNotificationMessage(title, message, timeStamp, intent, imageUrl); - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/quintus/labs/drugstore/helper/Data.java b/app/src/main/java/com/quintus/labs/drugstore/helper/Data.java deleted file mode 100644 index bce992b..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/helper/Data.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.quintus.labs.drugstore.helper; - -import com.quintus.labs.drugstore.model.Offer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Drug App - * https://github.com/quintuslabs/GroceryStore - * Created on 18-Feb-2019. - * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com - */ -public class Data { - - List offerList = new ArrayList<>(); - - - public List getOfferList() { - Offer offer = new Offer("http://1.bp.blogspot.com/-MMt-60IWEdw/VqZsh45Dv8I/AAAAAAAAMHg/70D9tVowlyc/s1600/askmegrocery-republic-day-offer.jpg"); - offerList.add(offer); - offer = new Offer("http://www.lootkaro.com/wp-content/uploads/2016/05/as1.jpg"); - offerList.add(offer); - offer = new Offer("https://453xbcknr3t3ahr522mms518-wpengine.netdna-ssl.com/wp-content/themes/iga-west/images/banner-save-more.jpg"); - offerList.add(offer); - offer = new Offer("https://images-eu.ssl-images-amazon.com/images/G/31/img16/Drug/SVD/July18/750x375.png"); - offerList.add(offer); - offer = new Offer("https://images-eu.ssl-images-amazon.com/images/G/31/img16/Drug/BreakfastStore/kmande_2018-06-15T12-00_f010a5_1121973_grocery_750x375.jpg"); - offerList.add(offer); - offer = new Offer("http://www.enjoygrocery.com/images/enjoygrocery-offer.jpg"); - offerList.add(offer); - - - return offerList; - } -} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/Category.java b/app/src/main/java/com/quintus/labs/drugstore/model/Category.java deleted file mode 100644 index 0315002..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/model/Category.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.quintus.labs.drugstore.model; - -/** - * Drug App - * https://github.com/quintuslabs/GroceryStore - * Created on 18-Feb-2019. - * Created by : Santosh Kumar Dash:- http://santoshdash.epizy.com - */ -public class Category { - String id; - String categry; - String cateimg; - String token; - - public Category(String id, String categry, String cateimg) { - this.id = id; - this.categry = categry; - this.cateimg = cateimg; - } - - public Category(String categry, String token) { - this.categry = categry; - this.token = token; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getCategry() { - return categry; - } - - public void setCategry(String categry) { - this.categry = categry; - } - - public String getCateimg() { - return cateimg; - } - - public void setCateimg(String cateimg) { - this.cateimg = cateimg; - } -} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/PlaceOrder.java b/app/src/main/java/com/quintus/labs/drugstore/model/PlaceOrder.java deleted file mode 100644 index 925804d..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/model/PlaceOrder.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.quintus.labs.drugstore.model; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -public class PlaceOrder { - @SerializedName("token") - String token; - @SerializedName("fname") - String fname; - @SerializedName("lname") - String lname; - @SerializedName("mobile") - String mobile; - @SerializedName("area") - String area; - @SerializedName("address") - String address; - @SerializedName("user_id") - String user_id; - @SerializedName("prescription") - String prescription; - @SerializedName("prescription_type") - String prescription_type; - @SerializedName("orderitems") - List orderitems; - - public PlaceOrder(String token, String fname, String lname, String mobile, String area, String address, String user_id, String prescription_type, List orderitems) { - this.token = token; - this.fname = fname; - this.lname = lname; - this.mobile = mobile; - this.area = area; - this.address = address; - this.user_id = user_id; - this.prescription_type = prescription_type; - this.orderitems = orderitems; - } - - public PlaceOrder() { - } - - public String getToken() { - return token; - } - - public void setToken(String token) { - this.token = token; - } - - public String getFname() { - return fname; - } - - public void setFname(String fname) { - this.fname = fname; - } - - public String getLname() { - return lname; - } - - public void setLname(String lname) { - this.lname = lname; - } - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - - public String getArea() { - return area; - } - - public void setArea(String area) { - this.area = area; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public List getOrderitems() { - return orderitems; - } - - public void setOrderitems(List orderitems) { - this.orderitems = orderitems; - } - - public String getUser_id() { - return user_id; - } - - public void setUser_id(String user_id) { - this.user_id = user_id; - } -} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/ProductResult.java b/app/src/main/java/com/quintus/labs/drugstore/model/ProductResult.java deleted file mode 100644 index 5b926c1..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/model/ProductResult.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.quintus.labs.drugstore.model; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -public class ProductResult { - @SerializedName("products") - List productList; - @SerializedName("code") - int code; - @SerializedName("status") - String status; - - - public ProductResult(List productList, int code, String status) { - this.productList = productList; - this.code = code; - this.status = status; - } - - public List getProductList() { - return productList; - } - - public void setProductList(List productList) { - this.productList = productList; - } - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } -} diff --git a/app/src/main/java/com/quintus/labs/drugstore/model/UserResult.java b/app/src/main/java/com/quintus/labs/drugstore/model/UserResult.java deleted file mode 100644 index ebc49a4..0000000 --- a/app/src/main/java/com/quintus/labs/drugstore/model/UserResult.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.quintus.labs.drugstore.model; - -import com.google.gson.annotations.SerializedName; - -public class UserResult { - @SerializedName("userData") - User user; - @SerializedName("code") - int code; - @SerializedName("status") - String status; - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } -} diff --git a/app/src/main/res/drawable/bg_1.png b/app/src/main/res/drawable/bg_1.png deleted file mode 100644 index 0b680df..0000000 Binary files a/app/src/main/res/drawable/bg_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/bg_2.jpeg b/app/src/main/res/drawable/bg_2.jpeg deleted file mode 100644 index 984ebf7..0000000 Binary files a/app/src/main/res/drawable/bg_2.jpeg and /dev/null differ diff --git a/app/src/main/res/drawable/bg_3.png b/app/src/main/res/drawable/bg_3.png deleted file mode 100644 index 8c40879..0000000 Binary files a/app/src/main/res/drawable/bg_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/cauliflower.jpeg b/app/src/main/res/drawable/cauliflower.jpeg deleted file mode 100644 index 1799e82..0000000 Binary files a/app/src/main/res/drawable/cauliflower.jpeg and /dev/null differ diff --git a/app/src/main/res/drawable/cauliflower_rotate.jpeg b/app/src/main/res/drawable/cauliflower_rotate.jpeg deleted file mode 100644 index d090797..0000000 Binary files a/app/src/main/res/drawable/cauliflower_rotate.jpeg and /dev/null differ diff --git a/app/src/main/res/drawable/graphe.jpeg b/app/src/main/res/drawable/graphe.jpeg deleted file mode 100644 index aed059f..0000000 Binary files a/app/src/main/res/drawable/graphe.jpeg and /dev/null differ diff --git a/app/src/main/res/drawable/orange.jpeg b/app/src/main/res/drawable/orange.jpeg deleted file mode 100644 index e2bcd62..0000000 Binary files a/app/src/main/res/drawable/orange.jpeg and /dev/null differ diff --git a/app/src/main/res/layout/login_layout.xml b/app/src/main/res/layout/login_layout.xml deleted file mode 100644 index a76599a..0000000 --- a/app/src/main/res/layout/login_layout.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -