diff --git a/1_KMA.jpg b/1_KMA.jpg new file mode 100644 index 0000000..1d9348f Binary files /dev/null and b/1_KMA.jpg differ diff --git a/accounts.md b/accounts.md index 6490b30..ce43f65 100755 --- a/accounts.md +++ b/accounts.md @@ -52,3 +52,6 @@ app password: sqczcsrtcehpywjv - chito - hypnotise@313 + +- daniel +- theCitadel@111 diff --git a/app/Http/Controllers/ClientsController.php b/app/Http/Controllers/ClientsController.php index 432d84b..b2962ae 100755 --- a/app/Http/Controllers/ClientsController.php +++ b/app/Http/Controllers/ClientsController.php @@ -10,6 +10,7 @@ use App\Jobs\SendNewUssdClientEmail; use App\Jobs\SendUssdClientActiveEmail; use App\Jobs\SendNewNotesEmailAlert; use App\Http\Requests; +use Carbon\Carbon; class ClientsController extends Controller @@ -21,12 +22,16 @@ class ClientsController extends Controller */ public function index() { + /* $client = Models\Client::find(3); + dd($client->client_services); + $client_arr = new Models\Client; $client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info')->orderBy('name', 'ASC')->paginate(15); + */ $data = [ 'page_title' => 'Clients', - 'client_arr' => $client_arr, + //'client_arr' => $client_arr, 'current_user' => session('current_user') ]; return view('client.index-tabulator', $data); @@ -55,7 +60,7 @@ class ClientsController extends Controller ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') ->join('flags AS flags', 'flags.country', '=', 'clients.country') - ->select('clients.id', 'clients.name', 'clients.status','clients.progress_indicator_score', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') + ->select('clients.id', 'clients.name', 'clients.status','clients.progress_indicator', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') ->orderBy('name', 'ASC') ->paginate(15); @@ -65,8 +70,8 @@ class ClientsController extends Controller ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') ->join('flags AS flags', 'flags.country', '=', 'clients.country') - ->select('clients.id','clients.name', 'clients.status', 'clients.progress_indicators','clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') - ->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%' OR clients.progress_indicators_score like '%$keyword%'") + ->select('clients.id','clients.name', 'clients.status', 'clients.progress_indicator','clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') + ->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%' OR clients.progress_indicator like '%$keyword%'") ->orderBy('name', 'ASC') ->paginate(15); } @@ -112,6 +117,8 @@ class ClientsController extends Controller $company_types = ['Aggregator/Supplier' => 'Aggregator/Supplier', 'Enterprise' => 'Enterprise', 'Hybrid' => 'Hybrid']; $industries = Models\Industry::orderBy('name', 'ASC')->pluck('name', 'name'); // $industries = Models\Industry::pluck('name', 'name')->orderBy('name', 'ASC'); + + $data = [ 'page_title' => 'Create Client', 'countries' => $countries, @@ -148,7 +155,13 @@ class ClientsController extends Controller 'industry' => 'required', 'auth_user_id' => 'required', // account manager ]); - + $onboarding_stages = Models\ClientOnboardingMainStage::orderBy('stage_id')->get(); + $client_current_stages = []; + + foreach ($onboarding_stages as $value) { + $client_current_stages[$value->stage] = "PENDING"; + } + $client_arr = [ 'name' => $request->name, 'email' => $request->email, @@ -158,7 +171,9 @@ class ClientsController extends Controller 'currency' => $request->currency, 'auth_user_id' => $request->auth_user_id, // account manager 'created_by' => session('current_user.id'), - 'last_modified_by' => session('current_user.id') + 'last_modified_by' => session('current_user.id'), + 'progress_indicator_score' => 10, + 'onboarding_progress_stage' => json_encode($client_current_stages) ]; if ($request->has('notes')) { $client_arr['notes'] = $request->notes; @@ -474,7 +489,17 @@ class ClientsController extends Controller { //with('short_code_info')-> $showclient = Models\Client::with('service_info', 'country_flag_info', 'auth_user_info', 'short_code_info')->find($id); - // dd($showclient); + // dd(json_decode($showclient->progress_indicators, true)); + /* + "Initial talks\/ discussions", + "Agreement Shared", + "Agreement signed by one party (Click Mobile\/ Client)", + "The agreement signed by both parties but interconnectivity has yet to begin", + "Connectivity details pending on Click Mobile side.","Integration initiated" + ] + */ + + $progress_indicators = Models\ClientIndicator::pluck('name', 'name'); $service_type = Models\Service::pluck('name', 'id'); $service_type_names = Models\Service::pluck('name', 'name'); $show_services = Models\ClientCategory::where('client_id', $id)->get(); @@ -511,6 +536,17 @@ class ClientsController extends Controller $status_bg = "danger"; } + if ($showclient->progress_indicator_score >= 70) { + $progress_status_bg = "success"; + } + elseif ($showclient->progress_indicator_score >= 50 && $showclient->progress_indicator_score < 70) { + $progress_status_bg = "warning"; + } + else{ + $progress_status_bg = "danger"; + } + + $renewal_due = 'N/A'; $highlight_colour = 'none'; //review this later @@ -518,35 +554,40 @@ class ClientsController extends Controller $renewal_due = "N/A"; } else{ - $current_date = date_create(date('Y-m-d')); - - $expiry_date = date_create($showclient->contract_validity); - - $diff = date_diff($current_date, $expiry_date); + $expiry_date = Carbon::parse($showclient->contract_validity); + $current_date = Carbon::parse(date('Y-m-d')); - $polar = $diff->format("%R"); - - $months = $diff->format("%m"); - - $days = $diff->format("%a"); - if ($days < 31) { + $polar = ($expiry_date < $current_date) ? "-" : "+"; + $days = $expiry_date->diffInDays($current_date); + if($days > 365){ if ($polar == '-') { $highlight_colour = 'warning'; - $renewal_due = "Contract expired $days days(s) ago"; + $renewal_due = "Contract expired " . floor($days/365) . " year(s) ago"; + } else{ - $renewal_due = "In $days day(s)" ; + $renewal_due = "In " . floor($days/365) . " year(s)"; + } + } + elseif($days > 31){ + if ($polar == '-') { + $highlight_colour = 'warning'; + $renewal_due = "Contract expired " . floor($days/31) . " month(s) ago"; + + } + else{ + dump($days); + $renewal_due = "In " . floor($days/31) . " months"; } } else{ if ($polar == '-') { $highlight_colour = 'warning'; - $renewal_due = "Contract expired $months month(s) ago"; - + $renewal_due = "Contract expired $days days(s) ago"; } else{ - $renewal_due = "In $months months"; + $renewal_due = "In $days day(s)" ; } } } @@ -560,11 +601,13 @@ class ClientsController extends Controller 'service_type_names' => $service_type_names, 'show_notes' => $show_notes, 'status_bg' => $status_bg, + 'progress_status_bg' => $progress_status_bg, 'voice_codes' => $voice_codes, 'sms_codes' => $sms_codes, 'ussd_codes' => $ussd_codes, 'countries' => $countries, 'networks' => $networks, + 'progress_indicators' => $progress_indicators, 'networks_raw' => array_combine($networks_raw, $networks_raw), 'renewal_due' => $renewal_due, 'recent_payments' => $recent_payments, @@ -667,12 +710,10 @@ class ClientsController extends Controller public function showservices($id) { $show_services = Models\ClientCategory::where('client_id', $id)->get(); - dd($show_services); $data = [ 'page_title' => 'Show Services', 'show_services' => $show_services ]; - return view('client.services', $data); } public function editservice($id) @@ -742,9 +783,51 @@ class ClientsController extends Controller $auth_users = Models\SystemUser::orderBy('name', 'ASC')->pluck('name', 'id'); $industries = Models\Industry::orderBy('name', 'ASC')->pluck('name', 'name'); $message_types_arr = ['International' => 'International', 'Local' => 'Local']; - $progress_indicators = Models\ClientIndicator::pluck('name', 'name'); - $current_progress_indicators = json_decode($client->progress_indicators, true); + $onboarding_sub_items = []; + $onboarding_sub_items_progress = []; + $has_pending = false; + + //This should not be false because onboarding_progress_stage is populated during client creation + $onboarding_progress = json_decode($client->onboarding_progress_stage, 1); + // + $has_pending = in_array("PENDING", $onboarding_progress); + if ($has_pending == true) { + $pending_stage = Arr::where($onboarding_progress, function ($value, $key) { + return $value == "PENDING"; + }); + $pending_stage = array_key_first($pending_stage); + + $stage_details = Models\ClientOnboardingMainStage::where('stage', $pending_stage)->first(); + //get sub items + //dump($stage_details); + $onboarding_sub_items_progress = Models\ClientOnboardingProgress::where('stage_id', $stage_details->stage_id)->where('client_id', $id)->pluck('name', 'name'); + //dd($onboarding_sub_items_progress); + $onboarding_sub_items = Models\ClientOnboardingSubItem::where('stage_id', $stage_details->stage_id)->pluck('name', 'name'); + // dump($stage_details->stage_id); + // dd($onboarding_sub_items); + /* + $onboarding_stages = Models\ClientOnboardingStage::where('client_id', $id)->where('status', 'PENDING')->groupBy('stage')->get(); + + $onboarding_stages = Models\ClientOnboardingProgress::where('client_id', $id)->where('status', 'PENDING')->orderBy('stage', 'ASC')->first(); + + */ + #$progress_indicators = Models\ClientIndicator::pluck('name', 'name'); + #$current_progress_indicators = json_decode($client->progress_indicators, true); + } + else{ + $pending_stage = "COMPLETED"; + } + /* + else{ + + $stage_details = Models\ClientOnboardingMainStage::where('stage_id', 1)->first(); + //get sub items + // dd($stage_details); + $onboarding_sub_items_progress = Models\ClientOnboardingProgress::where('stage_id', $stage_details->stage_id)->where('client_id', $id)->get(); + $onboarding_sub_items = Models\ClientOnboardingSubItem::where('stage_id', $stage_details->stage_id)->pluck('name', 'id'); + } + */ $how_we_got_clients_arr = ['Event : (GCCM) etc' => 'Event : (GCCM) etc', 'Referral' => 'Referral', 'Word of Mouth' => 'Word of Mouth', 'Marketing' => 'Marketing', 'Other' => 'Other']; @@ -823,7 +906,6 @@ class ClientsController extends Controller $contract_types = ['Bilateral' => 'Bilateral', 'Unilateral' => 'Unilateral']; $connections = ['SMPP' => 'SMPP', 'HTTP' => 'HTTP']; - $data = [ 'client' => $client, 'countries' => $countries, @@ -856,9 +938,14 @@ class ClientsController extends Controller 'industries' => $industries, 'how_we_got_clients_arr' => $how_we_got_clients_arr, 'current_services' => json_decode($client->services, true), - 'progress_indicators' => $progress_indicators, - 'current_progress_indicators' => $current_progress_indicators + + 'onboarding_sub_items_progress' => $onboarding_sub_items_progress, + 'onboarding_sub_items' => $onboarding_sub_items, + 'current_pending_stage' => $pending_stage, + 'has_pending' => $has_pending ]; + // dd($data); + return view('client.edit', $data); } @@ -883,10 +970,48 @@ class ClientsController extends Controller ]); */ // dump($request->has('other_document_name')); - // dd($request->all()); + // dump($request->all()); $client_update = Models\Client::find($id); - $progress_indicators_arr = json_encode($request->progress_indicators); - // dd($progress_indicators_arr); + $current_pending_stage_details = Models\ClientOnboardingMainStage::where('stage', $request->current_pending_stage)->first(); + $get_stage_subs_items = Models\ClientOnboardingSubItem::where('stage_id', $current_pending_stage_details->stage_id)->get(); + // dd($get_stage_subs_items); + //$onboarding_sub_items_progress = Models\ClientOnboardingProgress::where('stage_id', $current_pending_stage_details->stage_id)->where('client_id', $id)->pluck('name', 'name'); + //$progress_indicators_arr = json_encode($request->progress_indicators); + + #update the table for onboarding progress + foreach ($request->onboarding_sub_items_progress as $value) { + $stage_id = ['stage_id' => $current_pending_stage_details->stage_id, 'client_id' => $id, 'name' => $value ]; + $progress_arr = [ + 'status' => 'COMPLETED' + ]; + $clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr); + } + + //update the status of onboarding progress stage in clients + $get_stage_onboarding_status = Models\ClientOnboardingProgress::where('client_id', $id)->where('stage_id', $current_pending_stage_details->stage_id)->where('status', 'COMPLETED')->get(); + // dd($get_stage_onboarding_status); + $onboarding_progress_stage = json_decode($client_update->onboarding_progress_stage, true); + + // dd(count($get_stage_subs_items) == count($get_stage_onboarding_status)); + if (count($get_stage_subs_items) == count($get_stage_onboarding_status)) { + //check if all items have been completed and update + $onboarding_progress_stage[$current_pending_stage_details->stage] = 'COMPLETED'; + + $pending_stage = Arr::where($onboarding_progress_stage, function ($value, $key) { + return $value == "PENDING"; + }); + $pending_stage = array_key_first($pending_stage); + if ($pending_stage == true) { + $client_update->progress_indicator = $pending_stage; + } + else{ + $client_update->progress_indicator = 'COMPLETED'; + } + + } + + + if ($request->has('document_one') && $request->has('document_one_name')) { if ($request->file('document_one')->isValid()) { $filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension(); @@ -958,14 +1083,15 @@ class ClientsController extends Controller $client_update->currency = $request->currency; $client_update->notes = $request->notes; $client_update->industry = $request->industry; - $client_update->progress_indicators = $progress_indicators_arr; - + #$client_update->progress_indicators = json_encode($request->onboarding_sub_items_progress); + $client_update->onboarding_progress_stage = json_encode($onboarding_progress_stage); + /* $general_indicators = Models\ClientIndicator::count(); + $indicator_score = (count($request->progress_indicators)/$general_indicators) * 100; $indicator_score = number_format($indicator_score); - // dd($indicator_score); $client_update->progress_indicator_score = $indicator_score; - + */ $client_update->skype_name = $request->skype_name ?? ""; $client_update->linkedin_name = $request->linkedin_name ?? ""; $client_update->smpp_username = $request->smpp_username ?? ""; @@ -1002,7 +1128,9 @@ class ClientsController extends Controller $result = $client_update->save(); - $client = Models\Client::find($id); + + + #$client = Models\Client::find($id); /* if (in_array('3', $request->services)) { if ($request->status == 'active' && $client_update->status !== 'active') { @@ -1118,6 +1246,16 @@ class ClientsController extends Controller // $filename = str_replace(' ', '_', $filename); return \Response::download($file, $filename, $headers); } + public function showOnboardingForm($client_id){ + $client = Models\Client::findOrFail($client_id); + + + $data = [ + 'page_title' => 'Clients | Onboarding Checklist', + 'client' => $client + ]; + return view('client.onboarding_show', $data); + } public function cleanStr($string){ // Replaces all spaces with hyphens. $string = str_replace(' ', '-', $string); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 38b81aa..baee9e8 100755 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -59,4 +59,24 @@ class Controller extends BaseController $retval = Models\UserActivity::create($activity_arr); return true; } + public function storeLoggedUser(){ + $user_id = session('current_user.id'); + $logged_arr = [ + 'user_id' => $user_id, + 'last_seen_time' => date('Y-m-d H:i:s'), + 'ip_address' => \Request::ip(), + 'device' => request()->header('User-Agent') + ]; + $retval = Models\LoggedUser::create($logged_arr); + return true; + } + public function deleteLoggedUser(){ + $user_id = session('current_user.id'); + $device = request()->header('User-Agent'); + $logged_user = Models\LoggedUser::where('user_id', $user_id)->where('device', $device)->first(); + if ($logged_user) { + \DB::table('logged_users')->where('id', $logged_user->id)->delete(); + } + return true; + } } diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 8542b27..99baa61 100755 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -15,17 +15,20 @@ class DashboardController extends Controller $sms_clients = Models\Client::where('services', 'LIKE', '%sms%')->count(); $voice_clients = Models\Client::where('services', 'LIKE', '%ivr%')->count(); $expiring_contracts = Models\Client::where('contract_auto_renew', '<>', 'YES')->where('contract_validity', '<>', null)->orwhere('contract_validity', '<>', '')->orderBy('contract_validity', 'ASC')->take(5)->get(); - //dd($expiring_contracts->isEmpty() == false); + $user_activities = Models\UserActivity::where('user_id', '>', '1')->with('userInfo')->orderBy('created_at', 'DESC')->take(5)->get(); + $recent_clients = Models\Client::with('auth_user_info')->orderBy('created_at', 'DESC')->take(5)->get(); $data = [ 'page_title' => 'Dashboard', 'sms' => $sms_clients, 'ussd' => $ussd_clients, 'voice' => $voice_clients, 'total' => $total_clients, + 'recent_clients' => $recent_clients, + 'user_activities' => $user_activities, 'expiring_contracts' => $expiring_contracts ]; - //dd($data); + // dd($data); return view('dashboard.index_two', $data); } diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index 634d45c..780fb0d 100755 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -32,30 +32,27 @@ class LoginController extends Controller $request->session()->put('current_user.phone', $logged_in->phone); $request->session()->put('current_user.designation', $logged_in->designation_info->name); - \Log::info($logged_in->name . ' successfully logged in at : ' . date('Y-m-d H:i:s')); - // return redirect(url('dashboard')); - - $activity_arr = [ - 'type' => 'staff', - 'content' => "User ID : " . $logged_in->id . " (" . $logged_in->name . ") Logged In", - 'user_id' => $logged_in->id, - 'ip_address' => \Request::ip(), - 'device' => $request->header('User-Agent') - ]; - $retval = Models\UserActivity::create($activity_arr); + \Log::info($logged_in->name . ' Successfully logged in at : ' . date('Y-m-d H:i:s')); + $content = $logged_in->name . " Successfully Logged In"; + + $this->logUsersActivity($type = 'staff', $content); + $this->deleteLoggedUser(); + $this->storeLoggedUser(); return redirect(url('/')); } public function handle_logout(Request $request) { + $this->deleteLoggedUser(); $user_id = session('current_user.id'); $username = session('current_user.name'); - $content = "User ID : " . $user_id . " (" . $username . ") Logged Out"; + $content = $username . " Logged Out"; $request->session()->forget('current_user'); $request->session()->flush(); $request->session()->regenerate(true); $this->logUsersActivity($type = 'staff', $content); + return redirect("/"); } diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php new file mode 100644 index 0000000..8444235 --- /dev/null +++ b/app/Http/Controllers/ReportsController.php @@ -0,0 +1,45 @@ + 'Recent Clients', + 'current_user' => session('current_user') + ]; + return view('reports.recent_clients', $data); + + } + public function getRecentClientsJson(){ + // $clients = Models\Client::where()->get(); + /* + $clients = \DB::table('clients') + ->whereRaw('week(created_at) = WEEK(NOW())') + ->with('auth_user_info') + ->get(); + */ + $clients = \DB::table('clients') + ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') + ->select('clients.id','clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'clients.created_at') + ->whereRaw("week(clients.created_at) = WEEK(NOW())") + ->orderBy('name', 'ASC')->paginate(50); + + return response()->json($clients); + + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a323929..2f10b75 100755 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -58,5 +58,6 @@ class Kernel extends HttpKernel 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'checklogin' => \App\Http\Middleware\CheckLogin::class, + 'checkcurrentlylogged' => \App\Http\Middleware\CheckCurrentlyLoggedInUsers::class, ]; } diff --git a/app/Http/Middleware/CheckCurrentlyLoggedInUsers.php b/app/Http/Middleware/CheckCurrentlyLoggedInUsers.php new file mode 100644 index 0000000..0d7500e --- /dev/null +++ b/app/Http/Middleware/CheckCurrentlyLoggedInUsers.php @@ -0,0 +1,30 @@ +session()->has('current_user')){ + $id = session('current_user.id'); + $device = $request->server('HTTP_USER_AGENT'); + $realm = $id . $device; + $current_user = Models\LoggedUser::where('user_id', $id)->where('device', $device)->first(); + $current_user->last_seen_time = date('Y-m-d H:i:s'); + $current_user->ip_address = \Request::ip(); + + $current_user->save(); + } + return $next($request); + } +} diff --git a/app/Http/Requests/UpdateClientRequest.php b/app/Http/Requests/UpdateClientRequest.php index 492460a..8a3bda5 100644 --- a/app/Http/Requests/UpdateClientRequest.php +++ b/app/Http/Requests/UpdateClientRequest.php @@ -20,7 +20,6 @@ class UpdateClientRequest extends FormRequest 'other_document_name.required_with' => 'You need to enter a name for the other document.', //'document_two_name.required_with' => 'Please select a file to upload.', //'document_three_name.required_with' => 'Please select a file to upload.', - 'document_one.mimes' => 'The uploaded file must be a PDF, An MS Word Document or An Image.', 'document_one.max' => 'The uploaded file may not be larger than 20MB.', 'document_two.mimes' => 'The uploaded file must be a PDF, An MS Word Document or An Image.', @@ -46,8 +45,9 @@ class UpdateClientRequest extends FormRequest 'status' => 'required', 'currency' => 'required', 'auth_user_id' => 'required', - 'progress_indicators' => 'required', - 'contract_validity' => 'sometimes|date', + 'progress_indicators' => 'sometimes', + 'contract_validity' => 'required|date', + 'contract_auto_renew'=> 'required', /* 'document_one_name' => 'required_with:document_one.*', 'document_two_name' => 'required_with:document_two.*', diff --git a/app/Models/Client.php b/app/Models/Client.php index e094f7d..c730f1c 100755 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -17,6 +17,14 @@ class Client extends Model $indicator_score = (count($current_indicator_count)/$general_indicators) * 100; return number_format($indicator_score); } + + + public function getOnboardingProgressStageAttribute($value){ + $onboarding_stage = json_decode($value, true); + + // $indicator_score = (count($current_indicator_count)/$general_indicators) * 100; + return $onboarding_stage[0]; + } */ public function country_info(){ return $this->hasOne('App\Models\Country', 'alpha_2_code', 'country'); diff --git a/app/Models/ClientOnboardingMainStage.php b/app/Models/ClientOnboardingMainStage.php new file mode 100644 index 0000000..674fabe --- /dev/null +++ b/app/Models/ClientOnboardingMainStage.php @@ -0,0 +1,10 @@ +hasOne('App\Models\ClientOnboardingMainStage', 'stage_id', 'id'); + } + //this will produce one stage + //I need a relationship to show all sub items +} diff --git a/app/Models/ClientOnboardingStage.php b/app/Models/ClientOnboardingStage.php new file mode 100644 index 0000000..841dc93 --- /dev/null +++ b/app/Models/ClientOnboardingStage.php @@ -0,0 +1,11 @@ +hasOne('App\Models\Account', 'id', 'user_id'); + } +} diff --git a/app/Models/OnboardingStage.php b/app/Models/OnboardingStage.php new file mode 100644 index 0000000..5690457 --- /dev/null +++ b/app/Models/OnboardingStage.php @@ -0,0 +1,10 @@ +hasOne('App\Models\StaffMember', 'id', 'user_id'); + } + public function getActivityTimeAttribute(){ + $created = $this->created_at; + $parsed_created_date = Carbon::parse($created); + $current_date = Carbon::parse(date('Y-m-d')); + $days = $parsed_created_date->diffForHumans(); + return $days; + } } diff --git a/app/Models/UssdClientPayment.php b/app/Models/UssdClientPayment.php index b7308e3..06e554d 100755 --- a/app/Models/UssdClientPayment.php +++ b/app/Models/UssdClientPayment.php @@ -8,8 +8,10 @@ class UssdClientPayment extends Model { protected $guarded = array('id'); public $table = "ussd_client_payments"; + public function client_info(){ return $this->hasOne('App\Models\Client', 'id', 'client_id'); } + } diff --git a/pending-issues.md b/pending-issues.md new file mode 100644 index 0000000..6b935bd --- /dev/null +++ b/pending-issues.md @@ -0,0 +1,28 @@ +# Onboarding process + +# Date 2024-01-18 +i Effie, +Lets have app fee and development once off 100,000 and at 13% annual maintenance, which reminds me we are not billing customers for support and annual maintenance ☹. +@'Kwesi Banson' we need to add these on the ERP. +Kind Regards, +Sam + + +Thank you sir, + +Has it been uploaded on the ERP +@'Kwesi Banson' I think these documents need special locking and even encryption – think about it, +Kind Regards, +Sam + + +# Mansa's Request +ERP request- A report for all new clients uploaded on ERP for the week and corresponding Account Manager. +Needed on friday by 10am. + +# Mphatso's +Great idea on the performance indicators, I have a suggestion for clients that are live. + +When these are being edited, there’s no indicator that applies for their level of activity. + +Could we add something on traffic flow as the other options would not necessarily apply. diff --git a/public/assets/js/clientshow.js b/public/assets/js/clientshow.js index 6b2d251..7531e87 100644 --- a/public/assets/js/clientshow.js +++ b/public/assets/js/clientshow.js @@ -4,6 +4,26 @@ var month = d.getMonth()+1; var day = d.getDate(); var currentDate = d.getFullYear() + '/' + ((''+month).length<2 ? '0' : '') + month + '/' + ((''+day).length<2 ? '0' : '') + day; + /* + $('.progressIndicatorCheckbox').change(function() { + console.log('food inside'); + if(this.checked) { + var returnVal = confirm("Are you sure?"); + $(this).prop("checked", returnVal); + } + $('#textbox1').val(this.checked); + }); + */ + $('.progressIndicatorCheckbox').on('change', function() { + // From the other examples + console.log('finker'); + if (!this.checked) { + var sure = confirm("Are you sure?"); + this.checked = !sure; + $('#textbox1').val(sure.toString()); + } + }); + $('select').select2(); $('#myDatepicker2').datetimepicker({ @@ -17,6 +37,11 @@ evt.preventDefault(); $('#newNotesForm').modal('show'); }); + $('#progressIndicatorBtn').click(function(evt){ + console.log('foo bars'); + evt.preventDefault(); + $('#progressIndicatorDetailsModal').modal('show'); + }); $('#createSmsShortCodeBtn').click(function(evt){ evt.preventDefault(); diff --git a/public/assets/js/showclientreadonly.js b/public/assets/js/showclientreadonly.js new file mode 100644 index 0000000..1df2a3c --- /dev/null +++ b/public/assets/js/showclientreadonly.js @@ -0,0 +1,64 @@ + + init_gauge(); + + function init_gauge() { + + if( typeof (Gauge) === 'undefined'){ return; } + + console.log('init_gauge [' + $('.gauge-chart').length + ']'); + + console.log('init_gauge coming right up'); + + var chart_gauge_settings = { + lines: 12, + angle: 0, + lineWidth: 0.4, + pointer: { + length: 0.75, + strokeWidth: 0.042, + color: '#1D212A' + }, + limitMax: 'false', + colorStart: '#1ABC9C', + colorStop: '#1ABC9C', + strokeColor: '#F0F3F3', + generateGradient: true + }; + + + if ($('#chart_gauge_01').length){ + + var chart_gauge_01_elem = document.getElementById('chart_gauge_01'); + var chart_gauge_01 = new Gauge(chart_gauge_01_elem).setOptions(chart_gauge_settings); + + } + + + if ($('#gauge-text').length){ + + chart_gauge_01.maxValue = 6000; + chart_gauge_01.animationSpeed = 32; + chart_gauge_01.set(3200); + chart_gauge_01.setTextField(document.getElementById("gauge-text")); + + } + + if ($('#chart_gauge_02').length){ + + var chart_gauge_02_elem = document.getElementById('chart_gauge_02'); + var chart_gauge_02 = new Gauge(chart_gauge_02_elem).setOptions(chart_gauge_settings); + + } + + + if ($('#gauge-text2').length){ + + chart_gauge_02.maxValue = 9000; + chart_gauge_02.animationSpeed = 32; + chart_gauge_02.set(2400); + chart_gauge_02.setTextField(document.getElementById("gauge-text2")); + + } + + + } \ No newline at end of file diff --git a/public/assets/vendors/gauge.js/.bower.json b/public/assets/vendors/gauge.js/.bower.json new file mode 100644 index 0000000..a6ee214 --- /dev/null +++ b/public/assets/vendors/gauge.js/.bower.json @@ -0,0 +1,24 @@ +{ + "name": "bernii/gauge.js", + "version": "1.2.1", + "main": [ + "dist/gauge.js", + "dist/gauge.min.js", + "dist/gauge.coffee" + ], + "description": "100% native and cool looking animated JavaScript/CoffeScript gauge", + "license": "MIT", + "ignore": [], + "dependencies": {}, + "devDependencies": {}, + "homepage": "https://github.com/bernii/gauge.js", + "_release": "1.2.1", + "_resolution": { + "type": "version", + "tag": "v1.2.1", + "commit": "7ae09f41e1293f21ffbb9d233e9daed52629885b" + }, + "_source": "https://github.com/bernii/gauge.js.git", + "_target": "^1.2.1", + "_originalSource": "gauge.js" +} \ No newline at end of file diff --git a/public/assets/vendors/gauge.js/README.md b/public/assets/vendors/gauge.js/README.md new file mode 100644 index 0000000..ebfd47f --- /dev/null +++ b/public/assets/vendors/gauge.js/README.md @@ -0,0 +1,35 @@ +gauge.js +======== + +100% native and cool looking animated JavaScript/CoffeScript gauge + + * No images, no external CSS - pure canvas + * No dependencies + * Highly configurable + * Resolution independent + * Animated guage value changes + * Works in all major browsers + * MIT License + +## Usage + +```javascript +var opts = { + lines: 12, // The number of lines to draw + angle: 0.15, // The length of each line + lineWidth: 0.44, // The line thickness + pointer: { + length: 0.9, // The radius of the inner circle + strokeWidth: 0.035 // The rotation offset + }, + colorStart: '#6FADCF', // Colors + colorStop: '#8FC0DA', // just experiment with them + strokeColor: '#E0E0E0' // to see which ones work best for you +}; +var target = document.getElementById('foo'); // your canvas element +var gauge = new Gauge(target).setOptions(opts); // create sexy gauge! +gauge.value = 1250; // set actual value +gauge.maxValue = 3000; // set max gauge value +``` + +For an interactive demo and a list of all supported options please refer to the [project's homepage](http://bernii.github.com/gauge.js). diff --git a/public/assets/vendors/gauge.js/assets/arrow.gif b/public/assets/vendors/gauge.js/assets/arrow.gif new file mode 100644 index 0000000..246478a Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/arrow.gif differ diff --git a/public/assets/vendors/gauge.js/assets/bg.png b/public/assets/vendors/gauge.js/assets/bg.png new file mode 100755 index 0000000..c8a301c Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/bg.png differ diff --git a/public/assets/vendors/gauge.js/assets/bootstrap.min.css b/public/assets/vendors/gauge.js/assets/bootstrap.min.css new file mode 100644 index 0000000..aa245d2 --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.0.4 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}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-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333;}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.127659574%;*margin-left:2.0744680846382977%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%}.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%}.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%}.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%}.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%}.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%}.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%}.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%}.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%}.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%}.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%}.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:""}.container-fluid:after{clear:both}p{margin:0 0 9px}p small{font-size:11px;color:#999}.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{font-size:18px;line-height:27px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.page-header h1{line-height:1}ul,ol{padding:0;margin:0 0 9px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:18px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:18px}dt,dd{line-height:18px}dt{font-weight:bold;line-height:17px}dd{margin-left:9px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}strong{font-weight:bold}em{font-style:italic}.muted{color:#999}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}blockquote small{display:block;line-height:18px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:18px;font-style:normal;line-height:18px}small{font-size:100%}cite{font-style:normal}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:18px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 18px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:13.5px;color:#999}label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555}input,textarea{width:210px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-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 linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-ms-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer}input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}.uneditable-textarea{width:auto;height:auto}select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px}select{width:220px;border:1px solid #bbb}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:930px}input.span11,textarea.span11,.uneditable-input.span11{width:850px}input.span10,textarea.span10,.uneditable-input.span10{width:770px}input.span9,textarea.span9,.uneditable-input.span9{width:690px}input.span8,textarea.span8,.uneditable-input.span8{width:610px}input.span7,textarea.span7,.uneditable-input.span7{width:530px}input.span6,textarea.span6,.uneditable-input.span6{width:450px}input.span5,textarea.span5,.uneditable-input.span5{width:370px}input.span4,textarea.span4,.uneditable-input.span4{width:290px}input.span3,textarea.span3,.uneditable-input.span3{width:210px}input.span2,textarea.span2,.uneditable-input.span2{width:130px}input.span1,textarea.span1,.uneditable-input.span1{width:50px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;border-color:#ddd}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:""}.form-actions:after{clear:both}.uneditable-input{overflow:hidden;white-space:nowrap;cursor:not-allowed;background-color:#fff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}:-moz-placeholder{color:#999}:-ms-input-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.help-block,.help-inline{color:#555}.help-block{display:block;margin-bottom:9px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-prepend,.input-append{margin-bottom:5px}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:middle;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{z-index:2}.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc}.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;height:18px;min-width:16px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc}.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .uneditable-input{border-right-color:#ccc;border-left-color:#eee}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:9px}legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:18px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:9px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:18px}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";opacity:.3;filter:alpha(opacity=30)}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:4px 0;margin:1px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-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-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 10px 4px;margin-bottom:0;*margin-left:.3em;font-size:13px;line-height:18px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:1px}.btn-small{padding:5px 9px;font-size:11px;line-height:16px}.btn-small [class^="icon-"]{margin-top:-1px}.btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#ccc;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.btn-primary{background-color:#0074cc;*background-color:#05c;background-image:-ms-linear-gradient(top,#08c,#05c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#05c));background-image:-webkit-linear-gradient(top,#08c,#05c);background-image:-o-linear-gradient(top,#08c,#05c);background-image:-moz-linear-gradient(top,#08c,#05c);background-image:linear-gradient(top,#08c,#05c);background-repeat:repeat-x;border-color:#05c #05c #003580;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#05c;*background-color:#004ab3}.btn-primary:active,.btn-primary.active{background-color:#004099 \9}.btn-warning{background-color:#faa732;*background-color:#f89406;background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{background-color:#da4f49;*background-color:#bd362f;background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{background-color:#5bb75b;*background-color:#51a351;background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{background-color:#49afcd;*background-color:#2f96b4;background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{background-color:#414141;*background-color:#222;background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-group{position:relative;*margin-left:.3em;*zoom:1}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:9px;margin-bottom:9px}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-group>.btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.dropdown-toggle{*padding-top:4px;padding-right:8px;*padding-bottom:4px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini.dropdown-toggle{padding-right:5px;padding-left:5px}.btn-group>.btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.btn-group>.btn-large.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#05c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:7px;margin-left:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.btn-mini .caret{margin-top:5px}.btn-small .caret{margin-top:6px}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.alert{padding:8px 35px 8px 14px;margin-bottom:18px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert-heading{color:inherit}.alert .close{position:relative;top:-2px;right:-21px;line-height:18px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.navbar{*position:relative;*z-index:2;margin-bottom:18px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top,#333,#222);background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar{color:#999}.navbar .brand:hover{text-decoration:none}.navbar .brand{display:block;float:left;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#999}.navbar .navbar-text{margin-bottom:0;line-height:40px}.navbar .navbar-link{color:#999}.navbar .navbar-link:hover{color:#fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#fff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{display:block;float:left}.navbar .nav>li>a{float:none;padding:9px 10px 11px;line-height:19px;color:#999;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar .btn{display:inline-block;padding:4px 10px 4px;margin:5px 5px 6px;line-height:18px}.navbar .btn-group{padding:5px 5px 6px;margin:0}.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .divider-vertical{width:1px;height:40px;margin:0 9px;overflow:hidden;background-color:#222;border-right:1px solid #333}.navbar .nav.pull-right{margin-right:0;margin-left:10px}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;background-color:#2c2c2c;*background-color:#222;background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{background-color:#222;*background-color:#151515}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#080808 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown .dropdown-toggle .caret,.navbar .nav li.dropdown.open .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.active .caret{opacity:1;filter:alpha(opacity=100)}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:transparent}.navbar .nav li.dropdown.active>.dropdown-toggle:hover{color:#fff}.navbar .pull-right .dropdown-menu,.navbar .dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right .dropdown-menu:before,.navbar .dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right .dropdown-menu:after,.navbar .dropdown-menu.pull-right:after{right:13px;left:auto}.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-ms-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);background-repeat:repeat-x;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#999}.breadcrumb .active a{color:#333}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-bottom:18px;margin-left:0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-ms-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1020;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px}.popover.top{margin-top:-5px}.popover.right{margin-left:5px}.popover.bottom{margin-top:5px}.popover.left{margin-left:-5px}.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.popover .arrow{position:absolute;width:0;height:0}.popover-inner{width:280px;padding:3px;overflow:hidden;background:#000;background:rgba(0,0,0,0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3)}.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.popover-content{padding:14px;background-color:#fff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:18px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075)}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px}.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:18px;margin-bottom:18px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-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{width:0;height:18px;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-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-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;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:-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:-moz-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:-ms-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:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(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;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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:-moz-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:-ms-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-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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:-moz-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:-ms-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-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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:-moz-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:-ms-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-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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:-moz-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:-ms-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)}.accordion{margin-bottom:18px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:18px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-ms-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:10px 15px 5px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{color:#fff}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden} diff --git a/public/assets/vendors/gauge.js/assets/browsers.png b/public/assets/vendors/gauge.js/assets/browsers.png new file mode 100755 index 0000000..c64e6a4 Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/browsers.png differ diff --git a/public/assets/vendors/gauge.js/assets/cross.gif b/public/assets/vendors/gauge.js/assets/cross.gif new file mode 100644 index 0000000..0ee9c7a Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/cross.gif differ diff --git a/public/assets/vendors/gauge.js/assets/crosshair.gif b/public/assets/vendors/gauge.js/assets/crosshair.gif new file mode 100755 index 0000000..e0d79bf Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/crosshair.gif differ diff --git a/public/assets/vendors/gauge.js/assets/excanvas.compiled.js b/public/assets/vendors/gauge.js/assets/excanvas.compiled.js new file mode 100755 index 0000000..a34ca1d --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/excanvas.compiled.js @@ -0,0 +1,35 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +document.createElement("canvas").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement("canvas");a.attachEvent("onreadystatechange",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_|| +b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"}var c=b.getElementsByTagName("canvas"),d=0;for(;d','","");this.element_.insertAdjacentHTML("BeforeEnd",t.join(""))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push("g.x)g.x=e.x;if(h.y==null||e.yg.y)g.y=e.y}}a.push(' ">');if(b)if(typeof this.fillStyle=="object"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_=="gradient"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_), +z=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l')}else a.push('');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push("')}a.push("");this.element_.insertAdjacentHTML("beforeEnd",a.join(""))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:"close"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(), +this);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a, +0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager= +M;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})(); diff --git a/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider-tooltip.css b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider-tooltip.css new file mode 100755 index 0000000..0580d42 --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider-tooltip.css @@ -0,0 +1,117 @@ +/* + Sample tooltip code. Only works on grade A browsers (so no IE6,7 or 8). + + See: http://nicolasgallagher.com/multiple-backgrounds-and-borders-with-css2/ for full info on + how to style generated content & the associated pitfalls + + This code to be taken as experimental & untested - use at your discretion + + If showing the tooltip above the sider handle you are relegated to showing + single line tooltips due to styling constraints! +*/ + +.fd-slider-handle:before, +.fd-slider-handle:after + { + /* Remove from screen */ + opacity:0; + /* The following rules are not really needed as no browser yet supports CSS transitions + on generated content but I'll leave it in for the day when they do! */ + + /* Firefox */ + -moz-transition-property: opacity; + -moz-transition-duration: 1s; + -moz-transition-delay: 1s; + /* WebKit */ + -webkit-transition-property: opacity; + -webkit-transition-duration: 1s; + -webkit-transition-delay: 1s; + /* Opera */ + -o-transition-property: opacity; + -o-transition-duration: 1s; + -o-transition-delay: 1s; + /* Standard */ + transition-property: opacity; + transition-duration: 1s; + transition-delay: 1s; + } +/* + The tooltip body - as we position it above the slider and position the tooltip arrow + below it, we need to know the height of the body. This means that multi-line tooltips + are not supported. + + To support multi-line tooltips, you will need to position the tooltip below the slider + and the tooltip pointer above the tooltip body. Additionally, you will have to set the + tooltip bodies "height" to auto +*/ +.fd-slider-focused .fd-slider-handle:before, +.fd-slider-hover .fd-slider-handle:before, +.fd-slider-active .fd-slider-handle:before + { + display:block; + position:absolute; + top:-21px; + left:-8px; + margin:0; + width:20px; + padding:3px; + height:14px; + line-height:12px; + text-align: center; + font-size:10px; + font-weight: bold; + color:#fff; + text-shadow: 1px 1px 1px #1a3a95; + background:#2f6ee0; + z-index:1; + /* Use the ARIA valuetext property, set by the script, to generate the tooltip content */ + content:attr(aria-valuetext); + /* Border radius and box shadow */ + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + -moz-background-clip: padding; + -webkit-background-clip: padding-box; + background-clip: padding-box; + -moz-box-shadow: 0 0 4px #aaa; + -webkit-box-shadow: 0 0 4px #aaa; + box-shadow: 0px 0px 4px #999; + /* Change opacity for transition */ + opacity: 1; + } +/* The tooltip pointer */ +.fd-slider-focused .fd-slider-handle:after, +.fd-slider-hover .fd-slider-handle:after, +.fd-slider-active .fd-slider-handle:after + { + outline:none; + content:""; + display:block; + position:absolute; + top:-9px; + left:50%; + margin:0 0 0 -5px; + background:#2f6ee0; + z-index:2; + width:10px; + height:10px; + overflow:hidden; + /* Rotate element by 45 degress to get the "\/" pointer effect */ + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + /* Add a box shadow */ + -moz-box-shadow: 0 0 4px #aaa; + -webkit-box-shadow: 0 0 4px #aaa; + box-shadow: 0 0 4px #aaa; + /* Clip */ + clip:rect(4px, 14px, 14px, 4px); + /* Change opacity for transition */ + opacity: 1; + } +/* Remove completely for IE */ +.oldie .fd-slider-handle:before, +.oldie .fd-slider-handle:after + { + display:none; + } \ No newline at end of file diff --git a/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.css b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.css new file mode 100755 index 0000000..770148e --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.css @@ -0,0 +1,143 @@ + +/* The styles given to the associated form element in order to hide it */ +.fd-form-element-hidden, input.fd-form-element-hidden + { + display:none; + } +/* Horizontal Outer wrapper - all other DOM elements added as children to this top level wrapper */ +.fd-slider + { + width:100%; + /* The height of the slider handle */ + height:20px; + margin:0; + } +/* Vertical Outer wrapper - all other DOM elements added as children to this top level wrapper */ +.fd-slider-vertical + { + /* The width of the slider handle */ + width:20px; + /* Fill the available space */ + height:100%; + /* Set a 10 pixel right and bottom margin */ + margin:0 10px 10px 0; + /* You may wish to float the vertical sliders left or display:inline-block */ + /* float:left; */ + } +/* Shared rules - both horizontal & vertical sliders */ +.fd-slider, +.fd-slider-vertical + { + /* display:block required as the wrapper element is a span */ + display:block; + /* This lets us absolutely position the drag handle */ + position:relative; + text-decoration:none; + border:0 none; + -moz-user-select:none; + -khtml-user-select:none; + -webkit-touch-callout:none; + user-select:none; + } +.fd-slider-inner + { + /* Used by IE for the onfocus blur effect */ + display:none; + } + +/* The inner track bar */ +.fd-slider-bar + { + position:absolute; + display:block; + z-index:2; + height:6px; + width:100%; + border:1px solid #bbb; + border-bottom:1px solid #fff; + border-right:1px solid #fff; + margin:0; + padding:0; + overflow:hidden; + line-height:4px; + top:8px; + -moz-border-radius:4px; + -webkit-border-radius:4px; + border-radius:4px; + -moz-background-clip: padding; + -webkit-background-clip: padding-box; + background-clip: padding-box; + background-color: #333; + } +/* The animated range bar */ +.fd-slider-range + { + position:absolute; + display:block; + z-index:3; + height:6px; + margin:0; + padding:0 2px 0 0; + overflow:hidden; + top:9px; + -moz-border-radius:2px; + -webkit-border-radius:2px; + border-radius:2px; + -moz-background-clip: padding; + -webkit-background-clip: padding-box; + background-clip: padding-box; + background-color: #eee; + } +/* The drag handle */ +.fd-slider-handle + { + position:absolute; + display:block; + padding:0; + border:0 none; + margin:0 0 0 1px; + z-index:3; + top:5px; + left:0; + width:12px; + height:12px; + line-height: 1px !important; + outline:0 none; + background: #eee; + border: 1px solid #aaa; + border-radius: 12px; + -webkit-user-select: none; + -webkit-touch-callout:none; + -moz-user-select:none; + -moz-user-focus:none; + -moz-outline:0 none; + user-select:none; + } +/* Focus styles */ +.fd-slider-handle:focus + { + outline:0 none; + border:0 none; + -moz-user-focus:normal; + } +button.fd-slider-handle:focus::-moz-focus-inner + { + border-color: transparent; + } + +body.fd-slider-drag-vertical, +body.fd-slider-drag-vertical * + { + /* Stop text selection */ + -moz-user-select:none; + -webkit-user-select:none; + user-select:none; + } +body.fd-slider-drag-horizontal, +body.fd-slider-drag-horizontal * + { + /* Stop text selection */ + -moz-user-select:none; + -webkit-user-select:none; + user-select:none; + } diff --git a/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.js b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.js new file mode 100755 index 0000000..22dba75 --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/fd-slider/fd-slider.js @@ -0,0 +1,1212 @@ +/* + * Unobtrusive Slider Control / HTML5 Input Range polyfill + * http://www.frequency-decoder.com/ + * + * Copyright 2010, 2011, Brian McAllister + * Dual licensed under the MIT or GPL Version 2 licenses. + * + */ +var fdSlider = (function() { + var sliders = {}, + uniqueid = 0, + mouseWheelEnabled = true, + fullARIA = true, + describedBy = "fd-slider-describedby", + varSetRules = { + onfocus:true, + onvalue:true + }, + noRangeBar = false, + html5Animation = "jump", + isOpera = Object.prototype.toString.call(window.opera) === "[object Opera]", + fpRegExp = /^([-]{0,1}[0-9]+(\.[0-9]+){0,1})$/, + stepRegExp = /^([0-9]+(\.[0-9]+){0,1})$/; + + var parseJSON = function(str) { + // Check we have a String + if(typeof str !== 'string' || str == "") { return {}; }; + try { + // Does a JSON (native or not) Object exist + if(typeof JSON === "object" && JSON.parse) { + return window.JSON.parse(str); + // Genious code taken from: http://kentbrewster.com/badges/ + } else if(/mousewheelenabled|fullaria|describedby|norangebar|html5animation|varsetrules/.test(str.toLowerCase())) { + var f = Function(['var document,top,self,window,parent,Number,Date,Object,Function,', + 'Array,String,Math,RegExp,Image,ActiveXObject;', + 'return (' , str.replace(/<\!--.+-->/gim,'').replace(/\bfunction\b/g,'function-') , ');'].join('')); + return f(); + }; + } catch (e) { }; + + return {"err":"Could not parse the JSON object"}; + }; + + var affectJSON = function(json) { + if(typeof json !== "object") { return; }; + for(key in json) { + value = json[key]; + switch(key.toLowerCase()) { + case "mousewheelenabled": + mouseWheelEnabled = !!value; + break; + case "fullaria": + fullARIA = !!value; + break; + case "describedby": + describedBy = String(value); + break; + case "norangebar": + noRangeBar = !!value; + break; + case "html5animation": + html5Animation = String(value).search(/^(jump|tween|timed)$/i) != -1 ? String(value).toLowerCase() : "jump"; + break; + case "varsetrules": + if("onfocus" in value) { + varSetRules.onfocus = !!value.onfocus; + }; + if("onvalue" in value) { + varSetRules.onvalue = !!value.onvalue; + }; + break; + }; + }; + }; + + // Classic event functions + var addEvent = function(obj, type, fn) { + if( obj.attachEvent ) { + obj["e"+type+fn] = fn; + obj[type+fn] = function(){obj["e"+type+fn]( window.event );}; + obj.attachEvent( "on"+type, obj[type+fn] ); + } else { obj.addEventListener( type, fn, true ); } + }; + var removeEvent = function(obj, type, fn) { + try { + if( obj.detachEvent ) { + obj.detachEvent( "on"+type, obj[type+fn] ); + obj[type+fn] = null; + } else { obj.removeEventListener( type, fn, true ); } + } catch(err) {}; + }; + var stopEvent = function(e) { + e = e || window.event; + if(e.stopPropagation) { + e.stopPropagation(); + e.preventDefault(); + }; + + /*@cc_on@*/ + /*@if(@_win32) + e.cancelBubble = true; + e.returnValue = false; + /*@end@*/ + + return false; + }; + var preventDefault = function(e) { + e = e || window.event; + if(e.preventDefault) { + e.preventDefault(); + return; + }; + e.returnValue = false; + }; + + // Add/Remove classname utility functions + var addClass = function(e,c) { + if(new RegExp("(^|\\s)" + c + "(\\s|$)").test(e.className)) { return; }; + e.className += ( e.className ? " " : "" ) + c; + }; + + var removeClass = function(e,c) { + e.className = !c ? "" : e.className.replace(new RegExp("(^|\\s)" + c + "(\\s|$)"), " ").replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + }; + + // Returns an Object of key value pairs indicating which sliders have values + // that have been "set" by the user + var getValueSet = function() { + var obj = {}; + for(id in sliders) { + obj[id] = sliders[id].getValueSet(); + }; + return obj; + }; + + // Sets the valueSet variable for a specific slider + var setValueSet = function(sliderId, tf) { + if(!(sliderId in sliders)) return; + sliders[sliderId].setValueSet(!!tf); + }; + + // Javascript instantiation of a slider (input type="text" or select list) + var createSlider = function(options) { + if(!options || !options.inp || !options.inp.tagName || options.inp.tagName.search(/^input|select/i) == -1) { return false; }; + + options.html5Shim = false; + + if(options.inp.tagName.toLowerCase() == "select") { + if(options.inp.options.length < 2) { + return false; + }; + options.min = 0; + options.max = options.inp.options.length - 1; + options.step = 1; + options.precision = 0; + options.scale = false; + options.forceValue = true; + } else { + if(String(options.inp.type).search(/^text$/i) == -1) { + return false; + }; + options.min = options.min && String(options.min).search(fpRegExp) != -1 ? +options.min : 0; + options.max = options.max && String(options.max).search(fpRegExp) != -1 ? +options.max : 100; + options.step = options.step && String(options.step).search(stepRegExp) != -1 ? options.step : 1; + options.precision = options.precision && String(options.precision).search(/^[0-9]+$/) != -1 ? options.precision : (String(options.step).search(/\.([0-9]+)$/) != -1 ? String(options.step).match(/\.([0-9]+)$/)[1].length : 0); + options.scale = options.scale || false; + options.forceValue = ("forceValue" in options) ? !!options.forceValue : false; + }; + + options.maxStep = options.maxStep && String(options.maxStep).search(stepRegExp) != -1 ? +options.maxStep : +options.step * 2; + options.classNames = options.classNames || ""; + options.callbacks = options.callbacks || false; + + destroySingleSlider(options.inp.id); + sliders[options.inp.id] = new fdRange(options); + return true; + }; + + var getAttribute = function(elem, att) { + return elem.getAttribute(att) || ""; + }; + + // HTML5 input type="range" shim - called onload or onDomReady + var init = function() { + var inputs = document.getElementsByTagName("input"), + options; + + for(var i = 0, inp; inp = inputs[i]; i++) { + + if(inp.tagName.toLowerCase() == "input" + && + inp.type.toLowerCase() == "text" + && + (getAttribute(inp, "min") && getAttribute(inp, "min").search(fpRegExp) != -1 + || + getAttribute(inp, "max") && getAttribute(inp, "max").search(fpRegExp) != -1 + || + getAttribute(inp, "step") && getAttribute(inp, "step").search(/^(any|([0-9]+(\.[0-9]+){0,1}))$/i) != -1 + )) { + + // Skip elements that have already been created are are resident in the DOM + if(inp.id && document.getElementById("fd-slider-"+inp.id)) { + continue; + // Destroy elements that have already been created but not resident in the DOM + } else if(inp.id && !document.getElementById("fd-slider-"+inp.id)) { + destroySingleSlider(inp.id); + }; + + // Create an id for the form element if necessary + if(!inp.id) { inp.id = "fd-slider-form-elem-" + uniqueid++; }; + + // Basic option Object + options = { + inp: inp, + callbacks: [], + animation: html5Animation, + vertical: getAttribute(inp, "data-fd-slider-vertical") ? true : !!(inp.offsetHeight > inp.offsetWidth), + classNames: getAttribute(inp, "data-fd-slider-vertical"), + html5Shim: true + }; + + if(options.vertical && !getAttribute(inp, "data-fd-slider-vertical")) { + options.inpHeight = inp.offsetHeight; + }; + + options.min = getAttribute(inp, "min") || 0; + options.max = getAttribute(inp, "max") || 100; + options.step = getAttribute(inp, "step").search(/^any$/i) != -1 ? options.max - options.min : getAttribute(inp, "step").search(stepRegExp) != -1 ? inp.getAttribute("step") : 1; + options.precision = String(options.step).search(/\.([0-9]+)$/) != -1 ? String(options.step).match(/\.([0-9]+)$/)[1].length : 0; + options.maxStep = options.step * 2; + + destroySingleSlider(options.inp.id); + sliders[options.inp.id] = new fdRange(options); + }; + }; + + return true; + }; + var destroySingleSlider = function(id) { + if(id in sliders) { + sliders[id].destroy(); + delete sliders[id]; + return true; + }; + return false; + }; + var destroyAllsliders = function(e) { + for(slider in sliders) { sliders[slider].destroy(); }; + sliders = []; + }; + var unload = function(e) { + destroyAllsliders(); + sliders = null; + }; + var resize = function(e) { + for(slider in sliders) { sliders[slider].onResize(); }; + }; + var onDomReady = function() { + removeEvent(window, "load", init); + init(); + }; + var removeOnLoadEvent = function() { + removeEvent(window, "load", init); + }; + + function fdRange(options) { + var inp = options.inp, + disabled = false, + tagName = inp.tagName.toLowerCase(), + min = +options.min, + max = +options.max, + rMin = +options.min, + rMax = +options.max, + range = Math.abs(max - min), + step = tagName == "select" ? 1 : +options.step, + maxStep = options.maxStep ? +options.maxStep : step * 2, + precision = options.precision || 0, + steps = Math.ceil(range / step), + scale = options.scale || false, + hideInput = !!options.hideInput, + animation = options.animation || "", + vertical = !!options.vertical, + callbacks = options.callbacks || {}, + classNames = options.classNames || "", + html5Shim = !!options.html5Shim, + defaultVal = max < min ? min : min + ((max - min) / 2), + forceValue = html5Shim || !!options.forceValue, + inpHeight = html5Shim && vertical && ("inpHeight" in options) ? options.inpHeight : false, + timer = null, + kbEnabled = true, + sliderH = 0, + sliderW = 0, + tweenX = 0, + tweenB = 0, + tweenC = 0, + tweenD = 0, + frame = 0, + x = 0, + y = 0, + rMaxPx = 0, + rMinPx = 0, + handlePos = 0, + destPos = 0, + mousePos = 0, + stepPx = 0, + userSet = false, + touchEvents = false, + outerWrapper, + wrapper, + handle, + rangeBar, + bar; + + // Make sure we have a negative step if the max < min + if(max < min) { + step = -Math.abs(step); + maxStep = -Math.abs(maxStep); + }; + + // Add the 100% scale mark if needs be + if(scale) { + scale[100] = max; + }; + + // Set the "userSet" variable programmatically for this slider + function valueSet(tf) { + tf = !!tf; + if(tf != userSet) { + userSet = tf; + valueToPixels(getWorkingValueFromInput()); + }; + }; + + function disableSlider(noCallback) { + if(disabled && !noCallback) { return; }; + + try { + + removeEvent(handle, "focus", onFocus); + removeEvent(handle, "blur", onBlur); + + if(!isOpera) { + removeEvent(handle, "keydown", onKeyDown); + removeEvent(handle, "keypress", onKeyPress); + } else { + removeEvent(handle, "keypress", onKeyDown); + }; + + removeEvent(outerWrapper, "mouseover", onMouseOver); + removeEvent(outerWrapper, "mouseout", onMouseOut); + removeEvent(outerWrapper, "mousedown", onMouseDown); + removeEvent(outerWrapper, "touchstart", onMouseDown); + + if(mouseWheelEnabled) { + if (window.addEventListener && !window.devicePixelRatio) window.removeEventListener('DOMMouseScroll', trackMouseWheel, false); + else { + removeEvent(document, "mousewheel", trackMouseWheel); + removeEvent(window, "mousewheel", trackMouseWheel); + }; + }; + } catch(err) {}; + + clearTimeout(timer); + removeClass(outerWrapper, "fd-slider-focused"); + removeClass(outerWrapper, "fd-slider-active"); + + addClass(outerWrapper, "fd-slider-disabled"); + outerWrapper.setAttribute("aria-disabled", true); + inp.disabled = disabled = true; + + if(!noCallback) { + callback("disable"); + }; + }; + + function enableSlider(noCallback) { + if(!disabled && !noCallback) return; + + addEvent(handle, "focus", onFocus); + addEvent(handle, "blur", onBlur); + + if(!isOpera) { + addEvent(handle, "keydown", onKeyDown); + addEvent(handle, "keypress", onKeyPress); + } else { + addEvent(handle, "keypress", onKeyDown); + }; + + addEvent(outerWrapper, "touchstart", onMouseDown); + addEvent(outerWrapper, "mousedown", onMouseDown); + addEvent(outerWrapper, "mouseover", onMouseOver); + addEvent(outerWrapper, "mouseout", onMouseOut); + + removeClass(outerWrapper, "fd-slider-disabled"); + outerWrapper.setAttribute("aria-disabled", false); + inp.disabled = disabled = touchEvents = false; + + if(!noCallback) { + callback("enable"); + }; + }; + + // Destroys a slider + function destroySlider() { + // Clear any timeouts + clearTimeout(timer); + + // Remove pointers to DOM nodes + wrapper = bar = handle = outerWrapper = timer = null; + + // Call the "destroy" callback + callback("destroy"); + + // Delete the callback functions + callbacks = null; + }; + + // Calculates the pixel increment etc + function redraw() { + locate(); + // Internet Explorer requires the try catch + try { + var sW = outerWrapper.offsetWidth, + sH = outerWrapper.offsetHeight, + hW = handle.offsetWidth, + hH = handle.offsetHeight, + bH = bar.offsetHeight, + bW = bar.offsetWidth, + mPx = vertical ? sH - hH : sW - hW; + + stepPx = mPx / steps; + rMinPx = Math.max(scale ? percentToPixels(valueToPercent(rMin)) : Math.abs((rMin - min) / step) * stepPx, 0); + rMaxPx = Math.min(scale ? percentToPixels(valueToPercent(rMax)) : Math.abs((rMax - min) / step) * stepPx, Math.floor(vertical ? sH - hH : sW - hW)); + + sliderW = sW; + sliderH = sH; + + // Use the input value + valueToPixels(html5Shim || forceValue ? getWorkingValueFromInput() : (tagName == "select" ? inp.selectedIndex : parseFloat(inp.value))); + + } catch(err) {}; + callback("redraw"); + }; + + // Calls a callback function + function callback(type) { + if(!html5Shim) { + if(callbacks.hasOwnProperty(type)) { + var cbObj = {"disabled":disabled, "elem":inp, "value":tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value}; + + // Call all functions in sequence + for(var i = 0, func; func = callbacks[type][i]; i++) { + func.call(inp, cbObj); + }; + }; + } else if(type.match(/^(blur|focus|change)$/i)) { + if(typeof(document.createEventObject) != 'undefined') { + try { + var e = document.createEventObject(); + inp.fireEvent('on' + type.toLowerCase(), e); + } catch(err){ }; + } else if(typeof(document.createEvent) != 'undefined') { + var e = document.createEvent('HTMLEvents'); + e.initEvent(type, true, true); + inp.dispatchEvent(e); + }; + }; + }; + + // FOCUS & BLUR events + function onFocus(e) { + addClass(outerWrapper, 'fd-slider-focused'); + + // Is the value said to have been set by the user onfocus + if(varSetRules.onfocus) { + userSet = true; + valueToPixels(getWorkingValueFromInput()); + }; + + // If mousewheel events required then add them + if(mouseWheelEnabled) { + addEvent(window, 'DOMMouseScroll', trackMouseWheel); + addEvent(document, 'mousewheel', trackMouseWheel); + if(!isOpera) addEvent(window, 'mousewheel', trackMouseWheel); + }; + + // Callback... + callback("focus"); + return true; + }; + + function onBlur(e) { + removeClass(outerWrapper, 'fd-slider-focused'); + + // Remove mousewheel events if necessary + if(mouseWheelEnabled) { + removeEvent(document, 'mousewheel', trackMouseWheel); + removeEvent(window, 'DOMMouseScroll', trackMouseWheel); + if(!isOpera) removeEvent(window, 'mousewheel', trackMouseWheel); + }; + + kbEnabled = true; + + // Callback... + callback("blur"); + }; + + // MOUSEWHEEL events + function trackMouseWheel(e) { + if(!kbEnabled) return; + e = e || window.event; + var delta = 0; + + if (e.wheelDelta) { + delta = e.wheelDelta/120; + // Older versions of Opera require a small hack to inverse the delta + if (isOpera && window.opera.version() < 9.2) delta = -delta; + } else if(e.detail) { + delta = -e.detail/3; + }; + + if(vertical) { delta = -delta; }; + + if(delta) { + var value = getWorkingValueFromInput(); + + value += (delta < 0) ? -step : step; + + userSet = true; + valueToPixels(getValidValue(value)); + }; + + return stopEvent(e); + }; + + // KEYBOARD events + function onKeyPress(e) { + e = e || window.event; + // Let all non-hijacked keyboard events pass + if((e.keyCode >= 33 && e.keyCode <= 40) || !kbEnabled || e.keyCode == 45 || e.keyCode == 46) { + return stopEvent(e); + }; + return true; + }; + + function onKeyDown(e) { + if(!kbEnabled) return true; + + e = e || window.event; + var kc = e.keyCode != null ? e.keyCode : e.charCode; + + if ( kc < 33 || (kc > 40 && (kc != 45 && kc != 46))) return true; + + var value = getWorkingValueFromInput(); + + if( kc == 37 || kc == 40 || kc == 46 || kc == 34) { + // left, down, ins, page down + value -= (e.ctrlKey || kc == 34 ? +maxStep : +step); + } else if( kc == 39 || kc == 38 || kc == 45 || kc == 33) { + // right, up, del, page up + value += (e.ctrlKey || kc == 33 ? +maxStep : +step); + } else if( kc == 35 ) { + // max + value = rMax; + } else if( kc == 36 ) { + // min + value = rMin; + }; + + userSet = true; + valueToPixels(getValidValue(value)); + + callback("update"); + + // Opera doesn't let us cancel key events so the up/down arrows and home/end buttons will scroll the screen - which sucks + preventDefault(e); + }; + + // MOUSE & TOUCH events + + // Mouseover the slider + function onMouseOver(e) { + addClass(outerWrapper, 'fd-slider-hover'); + }; + + // Mouseout of the slider + function onMouseOut(e) { + // Should really check we are not still in the slider + removeClass(outerWrapper, 'fd-slider-hover'); + }; + + // Mousedown on the slider + function onMouseDown(e) { + e = e || window.event; + + // Stop page scrolling + preventDefault(e); + + // Grab the event target + var targ; + if (e.target) targ = e.target; + else if (e.srcElement) targ = e.srcElement; + if(targ.nodeType == 3) targ = targ.parentNode; + + // Are we using touchEvents + if(e.touches) { + // Skip gestures + if(e.targetTouches && e.targetTouches.length != 1) { + return false; + }; + + e = e.touches[0]; + touchEvents = true; + }; + + // Stop any animation timers + clearTimeout(timer); + timer = null; + + // Not keyboard enabled + kbEnabled = false; + + // User has set a value + userSet = true; + + // Handle mousedown - initiate drag + if(targ.className.search("fd-slider-handle") != -1) { + mousePos = vertical ? e.clientY : e.clientX; + handlePos = parseInt(vertical ? handle.offsetTop : handle.offsetLeft)||0; + + // Set a value on first click even if no movement + trackMouse(e); + + if(!touchEvents) { + addEvent(document, 'mousemove', trackMouse); + addEvent(document, 'mouseup', stopDrag); + } else { + addEvent(document, 'touchmove', trackMouse); + addEvent(document, 'touchend', stopDrag); + // Remove mouseEvents to stop them firing after the touch event + removeEvent(outerWrapper, "mousedown", onMouseDown); + }; + + addClass(outerWrapper, 'fd-slider-active'); + addClass(document.body, "fd-slider-drag-" + (vertical ? "vertical" : "horizontal")); + + // Wrapper mousedown - initiate animation to click point + } else { + locate(); + + var posx = 0, + sLft = 0, + sTop = 0; + + // Internet Explorer doctype woes + if (document.documentElement && document.documentElement.scrollTop) { + sTop = document.documentElement.scrollTop; + sLft = document.documentElement.scrollLeft; + } else if (document.body) { + sTop = document.body.scrollTop; + sLft = document.body.scrollLeft; + }; + + if (e.pageX) posx = vertical ? e.pageY : e.pageX; + else if (e.clientX) posx = vertical ? e.clientY + sTop : e.clientX + sLft; + + posx -= vertical ? y + Math.round(handle.offsetHeight / 2) : x + Math.round(handle.offsetWidth / 2); + posx = snapToPxValue(posx); + + // Tween animation to click point + if(animation == "tween") { + addClass(outerWrapper, 'fd-slider-active'); + tweenTo(posx); + // Progressive increment to click point + } else if(animation == "timed") { + addClass(outerWrapper, 'fd-slider-active'); + addEvent(document, touchEvents ? 'touchend' : 'mouseup', onDocMouseUp); + destPos = posx; + onTimer(); + // Immediate jump to click point + } else { + pixelsToValue(posx); + //addEvent(document, touchEvents ? 'touchend' : 'mouseup', onMouseUp); + }; + }; + + return stopEvent(e); + }; + + // Progressive increment to click point - clear the animation timer and remove the mouseup/touchend event + function onDocMouseUp( e ) { + e = e || window.event; + + preventDefault(e); + removeEvent(document, touchEvents ? 'touchend' : 'mouseup', onDocMouseUp); + removeClass(outerWrapper, "fd-slider-active"); + + clearTimeout(timer); + timer = null; + kbEnabled = true; + + return stopEvent(e); + }; + + // Mouseup or touchend event on the document to stop drag + function stopDrag(e) { + e = e || window.event; + + preventDefault(e); + + if(touchEvents) { + removeEvent(document, 'touchmove', trackMouse); + removeEvent(document, 'touchend', stopDrag); + } else { + removeEvent(document, 'mousemove', trackMouse); + removeEvent(document, 'mouseup', stopDrag); + }; + + kbEnabled = true; + removeClass(document.body, "fd-slider-drag-" + (vertical ? "vertical" : "horizontal")); + removeClass(outerWrapper, "fd-slider-active"); + + return stopEvent(e); + }; + + // Mousemove or touchmove event on the drag handle + function trackMouse(e) { + e = e || window.event; + + preventDefault(e); + + if(e.touches) { + // Skip gestures + if(e.targetTouches && e.targetTouches.length != 1) { + return false; + }; + e = e.touches[0]; + }; + + pixelsToValue(snapToPxValue(handlePos + (vertical ? e.clientY - mousePos : e.clientX - mousePos))); + + return false; + }; + + // Increments the slider by "inc" steps + function increment(inc) { + var value = getWorkingValueFromInput(); + userSet = true; + value += inc * step; + valueToPixels(getValidValue(value)); + }; + + // Attempts to locate the on-screen position of the slider + function locate(){ + var curleft = 0, + curtop = 0, + obj = outerWrapper; + + // Try catch for IE's benefit + try { + while (obj.offsetParent) { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + obj = obj.offsetParent; + }; + } catch(err) {}; + x = curleft; + y = curtop; + }; + + // Used during the progressive animation to click point + function onTimer() { + var xtmp = parseInt(vertical ? handle.offsetTop : handle.offsetLeft, 10); + xtmp = Math.round((destPos < xtmp) ? Math.max(destPos, Math.floor(xtmp - stepPx)) : Math.min(destPos, Math.ceil(xtmp + stepPx))); + + pixelsToValue(snapToPxValue(xtmp)); + if(xtmp != destPos) timer = setTimeout(onTimer, steps > 20 ? 50 : 100); + else { + kbEnabled = true; + removeClass(outerWrapper, "fd-slider-active"); + + callback("finalise"); + }; + }; + + var tween = function(){ + frame++; + var c = tweenC, + d = 20, + t = frame, + b = tweenB, + x = Math.ceil((t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b); + + pixelsToValue(t == d ? tweenX : x); + + if(t!=d) { + // Call the "move" callback on each animation increment + callback("move"); + timer = setTimeout(tween, 20); + } else { + clearTimeout(timer); + timer = null; + kbEnabled = true; + + removeClass(outerWrapper, "fd-slider-focused"); + removeClass(outerWrapper, "fd-slider-active"); + + // Call the "finalise" callback whenever the animation is complete + callback("finalise"); + }; + }; + + function tweenTo(tx){ + kbEnabled = false; + tweenX = parseInt(tx, 10); + tweenB = parseInt(vertical ? handle.offsetTop : handle.offsetLeft, 10); + tweenC = tweenX - tweenB; + tweenD = 20; + frame = 0; + + if(!timer) { timer = setTimeout(tween, 20); }; + }; + + // Returns a value within the range + function checkValue(value) { + if(isNaN(value) || value === "" || typeof value == "undefined") { + userSet = false; + return defaultVal; + } else if(value < Math.min(rMin,rMax)) { + userSet = false; + return Math.min(rMin,rMax); + } else if(value > Math.max(rMin,rMax)) { + userSet = false; + return Math.max(rMin,rMax); + }; + userSet = true; + return value; + }; + + // Returns a value within a range - uses the form element value as base + function getWorkingValueFromInput() { + return getValidValue(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); + }; + + // Returns a value within the range + function getValidValue(value) { + return (isNaN(value) || value === "" || typeof value == "undefined") ? defaultVal : Math.min(Math.max(value, Math.min(rMin,rMax)), Math.max(rMin,rMax)); + }; + + // Calculates value according to pixel position of slider handle + function pixelsToValue(px) { + var val = getValidValue(scale ? percentToValue(pixelsToPercent(px)) : vertical ? max - (Math.round(px / stepPx) * step) : min + (Math.round(px / stepPx) * step)); + + handle.style[vertical ? "top" : "left"] = (px || 0) + "px"; + redrawRange(); + setInputValue((tagName == "select" || step == 1) ? Math.round(val) : val); + }; + + // Calculates pixel position according to form element value + function valueToPixels(val) { + var clearVal = false, + value; + + // Allow empty values for non-polyfill sliders + if((typeof val == "undefined" || isNaN(val) || val === "") && tagName == "input" && !(html5Shim || forceValue)) { + value = defaultVal; + clearVal = true; + userSet = false; + } else { + value = checkValue(val); + }; + + handle.style[vertical ? "top" : "left"] = (scale ? percentToPixels(valueToPercent(value)) : vertical ? Math.round(((max - value) / step) * stepPx) : Math.round(((value - min) / step) * stepPx)) + "px"; + redrawRange(); + setInputValue(clearVal ? "" : value); + }; + + // Rounds a pixel value to the nearest "snap" point on the slider scale + function snapToPxValue(px) { + if(scale) { + return Math.max(Math.min(rMaxPx, px), rMinPx); + } else { + var rem = px % stepPx; + if(rem && rem >= (stepPx / 2)) { px += (stepPx - rem); } + else { px -= rem; }; + + if(px < Math.min(Math.abs(rMinPx), Math.abs(rMaxPx))) px = Math.min(Math.abs(rMinPx), Math.abs(rMaxPx)); + else if(px > Math.max(Math.abs(rMinPx), Math.abs(rMaxPx))) px = Math.max(Math.abs(rMinPx), Math.abs(rMaxPx)); + + return Math.min(Math.max(px, 0), rMaxPx); + }; + }; + + // Calculates a value according to percentage of distance handle has travelled + function percentToValue(pct) { + var st = 0, + fr = min, + value; + + for(var s in scale) { + if(!scale.hasOwnProperty(s)) { + continue; + }; + + if(pct >= st && pct <= +s ) { + value = fr + ((pct - st) * (+scale[s] - fr) ) / (+s - st); + }; + + st = +s; + fr = +scale[s]; + }; + + return value; + }; + + // Calculates the percentage handle position according to form element value + function valueToPercent(value) { + var st = 0, + fr = min, + pct = 0; + + for(var s in scale) { + if(!scale.hasOwnProperty(s)) { + continue; + }; + + if(value >= fr && value <= +scale[s]){ + pct = st + (value - fr) * (+s - st) / (+scale[s] - fr); + }; + + st = +s; + fr = +scale[s]; + }; + + return pct; + }; + + function percentToPixels(percent) { + return ((outerWrapper[vertical ? "offsetHeight" : "offsetWidth"] - handle[vertical ? "offsetHeight" : "offsetWidth"]) / 100) * percent; + }; + + function pixelsToPercent(pixels) { + return pixels / ((outerWrapper[vertical ? "offsetHeight" : "offsetWidth"] - outerWrapper[handle ? "offsetHeight" : "offsetWidth"]) / 100); + }; + + // Sets the form element with a valid value + function setInputValue(val) { + callback("update"); + + // If the user has not set this value or has entered an incorrect value then set a class + // to enable styling of the slider + if(!userSet) { + addClass(outerWrapper, "fd-slider-no-value"); + } else { + removeClass(outerWrapper, "fd-slider-no-value"); + }; + + if(tagName == "select") { + try { + val = parseInt(val, 10); + if(inp.selectedIndex === val) return; + inp.options[val].selected = true; + } catch (err) {}; + } else { + if(val != "") { + val = (min + (Math.round((val - min) / step) * step)).toFixed(precision); + }; + if(inp.value === val) { + return; + }; + inp.value = val; + }; + + updateAriaValues(); + callback("change"); + }; + + function checkInputValue(value) { + return !(isNaN(value) || value === "" || value < Math.min(rMin,rMax) || value > Math.max(rMin,rMax)); + }; + + function setSliderRange(newMin, newMax) { + if(rMin > rMax) { + newMin = Math.min(min, Math.max(newMin, newMax)); + newMax = Math.max(max, Math.min(newMin, newMax)); + rMin = Math.max(newMin, newMax); + rMax = Math.min(newMin, newMax); + } else { + newMin = Math.max(min, Math.min(newMin, newMax)); + newMax = Math.min(max, Math.max(newMin, newMax)); + rMin = Math.min(newMin, newMax); + rMax = Math.max(newMin, newMax); + }; + + if(defaultVal < Math.min(rMin, rMax)) defaultVal = Math.min(rMin, rMax); + else if(defaultVal > Math.max(rMin, rMax)) defaultVal = Math.max(rMin, rMax); + + handle.setAttribute("aria-valuemin", rMin); + handle.setAttribute("aria-valuemax", rMax); + + checkValue(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); + redraw(); + }; + + function redrawRange() { + if(noRangeBar) { + return; + }; + if(vertical) { + rangeBar.style["height"] = (bar.offsetHeight - handle.offsetTop) + "px"; + } else { + rangeBar.style["width"] = handle.offsetLeft + "px"; + }; + }; + + function findLabel() { + var label = false, + labelList = document.getElementsByTagName('label'); + // loop through label array attempting to match each 'for' attribute to the id of the current element + for(var i = 0, lbl; lbl = labelList[i]; i++) { + // Internet Explorer requires the htmlFor test + if((lbl['htmlFor'] && lbl['htmlFor'] == inp.id) || (lbl.getAttribute('for') == inp.id)) { + label = lbl; + break; + }; + }; + + if(label && !label.id) { label.id = inp.id + "_label"; }; + return label; + }; + + function updateAriaValues() { + handle.setAttribute("aria-valuenow", tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value); + handle.setAttribute("aria-valuetext", tagName == "select" ? (inp.options[inp.selectedIndex].text ? inp.options[inp.selectedIndex].text : inp.options[inp.selectedIndex].value) : inp.value); + }; + + function onInputChange(e) { + userSet = true; + valueToPixels(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); + updateAriaValues(); + }; + + function valueSet(tf) { + userSet = !!tf; + }; + + (function() { + + if(html5Shim || hideInput) { + addClass(inp, "fd-form-element-hidden"); + } else { + addEvent(inp, 'change', onInputChange); + }; + + // Add stepUp & stepDown methods to input element if using the html5Shim + if(html5Shim) { + inp.stepUp = function(n) { increment(n||1); }; + inp.stepDown = function(n) { increment(n||-1); }; + }; + + outerWrapper = document.createElement('span'); + outerWrapper.className = "fd-slider" + (vertical ? "-vertical " : " ") + (!html5Shim ? " fd-slider-no-value " : "") + classNames; + outerWrapper.id = "fd-slider-" + inp.id; + + if(vertical && inpHeight) { + outerWrapper.style.height = inpHeight + "px"; + }; + + wrapper = document.createElement('span'); + wrapper.className = "fd-slider-inner"; + + bar = document.createElement('span'); + bar.className = "fd-slider-bar"; + + if(!noRangeBar) { + rangeBar = document.createElement('span'); + rangeBar.className = "fd-slider-range"; + }; + + if(fullARIA) { + handle = document.createElement('span'); + handle.tabIndex = 0; + } else { + handle = document.createElement('a'); + handle.setAttribute("href", "#"); + }; + + handle.className = "fd-slider-handle"; + handle.appendChild(document.createTextNode(String.fromCharCode(160))); + + outerWrapper.appendChild(wrapper); + if(!noRangeBar) { + outerWrapper.appendChild(rangeBar); + }; + outerWrapper.appendChild(bar); + outerWrapper.appendChild(handle); + + inp.parentNode.insertBefore(outerWrapper, inp); + + /*@cc_on@*/ + /*@if(@_win32) + handle.unselectable = "on"; + if(!noRangeBar) rangeBar.unselectable = "on"; + bar.unselectable = "on"; + wrapper.unselectable = "on"; + outerWrapper.unselectable = "on"; + /*@end@*/ + + // Add ARIA accessibility info programmatically + outerWrapper.setAttribute("role", "application"); + + handle.setAttribute("role", "slider"); + handle.setAttribute("aria-valuemin", tagName == "select" ? inp.options[0].value : min); + handle.setAttribute("aria-valuemax", tagName == "select" ? inp.options[inp.options.length - 1].value : max); + + var lbl = findLabel(); + if(lbl) { + handle.setAttribute("aria-labelledby", lbl.id); + handle.id = "fd-slider-handle-" + inp.id; + /*@cc_on + /*@if(@_win32) + lbl.setAttribute("htmlFor", handle.id); + @else @*/ + lbl.setAttribute("for", handle.id); + /*@end + @*/ + }; + + // Are there page instructions + if(document.getElementById(describedBy)) { + handle.setAttribute("aria-describedby", describedBy); + }; + + // Is the form element initially disabled + if(inp.getAttribute("disabled") == true) { + disableSlider(true); + } else { + enableSlider(true); + }; + + // Does an initial form element value mean the user has set a valid value? + // Note: This only works onload on IE + if(varSetRules.onvalue) { + userSet = true; + checkValue(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); + }; + + updateAriaValues(); + callback("create"); + redraw(); + })(); + + return { + onResize: function(e) { if(outerWrapper.offsetHeight != sliderH || outerWrapper.offsetWidth != sliderW) { redraw(); }; }, + destroy: function() { destroySlider(); }, + reset: function() { valueToPixels(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); }, + stepUp: function(n) { increment(Math.abs(n)||1); }, + stepDown: function(n) { increment(-Math.abs(n)||-1); }, + increment: function(n) { increment(n); }, + disable: function() { disableSlider(); }, + enable: function() { enableSlider(); }, + setRange: function(mi, mx) { setSliderRange(mi, mx); }, + getValueSet: function() { return !!userSet; }, + setValueSet: function(tf) { valueSet(tf); }, + ieCheckValue: function() { if(varSetRules.onvalue) { userSet = true; checkValue(tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex); updateAriaValues(); redraw(); }; } + }; + }; + + addEvent(window, "load", init); + addEvent(window, "resize", resize); + addEvent(window, "unload", unload); + + // Have we been passed JSON within the including script tag + (function() { + var scriptFiles = document.getElementsByTagName('script'), + scriptInner = String(scriptFiles[scriptFiles.length - 1].innerHTML).replace(/[\n\r\s\t]+/g, " ").replace(/^\s+/, "").replace(/\s+$/, ""), + json = parseJSON(scriptInner); + + if(typeof json === "object" && !("err" in json)) { + affectJSON(json); + }; + })(); + + // Add oldie class if needed for IE < 9 + /*@cc_on + @if (@_jscript_version < 9) + addClass(document.documentElement, "oldie"); + @end + @*/ + + return { + createSlider: function(opts) { createSlider(opts); }, + destroyAll: function() { destroyAllsliders(); }, + destroySlider: function(id) { return destroySingleSlider(id); }, + redrawAll: function() { resize(); }, + increment: function(id, numSteps) { if(!(id in sliders)) { return false; }; sliders[id].increment(numSteps); }, + stepUp: function(id, n) { if(!(id in sliders)) { return false; }; sliders[id].stepUp(Math.abs(n)||1); }, + stepDown: function(id, n) { if(!(id in sliders)) { return false; }; sliders[id].stepDown(-Math.abs(n)||-1); }, + setRange: function(id, newMin, newMax) { if(!(id in sliders)) { return false; }; sliders[id].setRange(newMin, newMax); }, + addEvent: addEvent, + removeEvent: removeEvent, + stopEvent: stopEvent, + updateSlider: function(id) { if(!(id in sliders)) { return false; }; sliders[id].reset(); }, + onDomReady: function() { onDomReady(); }, + disable: function(id) { if(!(id in sliders)) { return false; }; sliders[id].disable(); }, + enable: function(id) { if(!(id in sliders)) { return false; }; sliders[id].enable(); }, + getValueSet: function() { return getValueSet(); }, + setValueSet: function(a, tf) { setValueSet(a, tf); }, + setGlobalVariables: function(json) { affectJSON(json); }, + removeOnload: function() { removeOnLoadEvent(); } + }; +})(); \ No newline at end of file diff --git a/public/assets/vendors/gauge.js/assets/github.gif b/public/assets/vendors/gauge.js/assets/github.gif new file mode 100755 index 0000000..779bc73 Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/github.gif differ diff --git a/public/assets/vendors/gauge.js/assets/hs.png b/public/assets/vendors/gauge.js/assets/hs.png new file mode 100644 index 0000000..3d94486 Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/hs.png differ diff --git a/public/assets/vendors/gauge.js/assets/hv.png b/public/assets/vendors/gauge.js/assets/hv.png new file mode 100644 index 0000000..1c5e01f Binary files /dev/null and b/public/assets/vendors/gauge.js/assets/hv.png differ diff --git a/public/assets/vendors/gauge.js/assets/jscolor.js b/public/assets/vendors/gauge.js/assets/jscolor.js new file mode 100644 index 0000000..2bdf7cd --- /dev/null +++ b/public/assets/vendors/gauge.js/assets/jscolor.js @@ -0,0 +1,935 @@ +/** + * jscolor, JavaScript Color Picker + * + * @version 1.3.13 + * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html + * @author Jan Odvarko, http://odvarko.cz + * @created 2008-06-15 + * @updated 2012-01-19 + * @link http://jscolor.com + */ + + +var jscolor = { + + + dir : '', // location of jscolor directory (leave empty to autodetect) + bindClass : 'color', // class name + binding : true, // automatic binding via + preloading : true, // use image preloading? + + + install : function() { + jscolor.addEvent(window, 'load', jscolor.init); + }, + + + init : function() { + if(jscolor.binding) { + jscolor.bind(); + } + if(jscolor.preloading) { + jscolor.preload(); + } + }, + + + getDir : function() { + if(!jscolor.dir) { + var detected = jscolor.detectDir(); + jscolor.dir = detected!==false ? detected : 'jscolor/'; + } + return jscolor.dir; + }, + + + detectDir : function() { + var base = location.href; + + var e = document.getElementsByTagName('base'); + for(var i=0; i vs[a] ? + (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) : + tp[a], + -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ? + (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) : + (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c) + ]; + } + drawPicker(pp[a], pp[b]); + } + }; + + + this.importColor = function() { + if(!valueElement) { + this.exportColor(); + } else { + if(!this.adjust) { + if(!this.fromString(valueElement.value, leaveValue)) { + styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + } + } else if(!this.required && /^\s*$/.test(valueElement.value)) { + valueElement.value = ''; + styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + + } else if(this.fromString(valueElement.value)) { + // OK + } else { + this.exportColor(); + } + } + }; + + + this.exportColor = function(flags) { + if(!(flags & leaveValue) && valueElement) { + var value = this.toString(); + if(this.caps) { value = value.toUpperCase(); } + if(this.hash) { value = '#'+value; } + valueElement.value = value; + } + if(!(flags & leaveStyle) && styleElement) { + styleElement.style.backgroundImage = "none"; + styleElement.style.backgroundColor = + '#'+this.toString(); + styleElement.style.color = + 0.213 * this.rgb[0] + + 0.715 * this.rgb[1] + + 0.072 * this.rgb[2] + < 0.5 ? '#FFF' : '#000'; + } + if(!(flags & leavePad) && isPickerOwner()) { + redrawPad(); + } + if(!(flags & leaveSld) && isPickerOwner()) { + redrawSld(); + } + }; + + + this.fromHSV = function(h, s, v, flags) { // null = don't change + h<0 && (h=0) || h>6 && (h=6); + s<0 && (s=0) || s>1 && (s=1); + v<0 && (v=0) || v>1 && (v=1); + this.rgb = HSV_RGB( + h===null ? this.hsv[0] : (this.hsv[0]=h), + s===null ? this.hsv[1] : (this.hsv[1]=s), + v===null ? this.hsv[2] : (this.hsv[2]=v) + ); + this.exportColor(flags); + }; + + + this.fromRGB = function(r, g, b, flags) { // null = don't change + r<0 && (r=0) || r>1 && (r=1); + g<0 && (g=0) || g>1 && (g=1); + b<0 && (b=0) || b>1 && (b=1); + var hsv = RGB_HSV( + r===null ? this.rgb[0] : (this.rgb[0]=r), + g===null ? this.rgb[1] : (this.rgb[1]=g), + b===null ? this.rgb[2] : (this.rgb[2]=b) + ); + if(hsv[0] !== null) { + this.hsv[0] = hsv[0]; + } + if(hsv[2] !== 0) { + this.hsv[1] = hsv[1]; + } + this.hsv[2] = hsv[2]; + this.exportColor(flags); + }; + + + this.fromString = function(hex, flags) { + var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i); + if(!m) { + return false; + } else { + if(m[1].length === 6) { // 6-char notation + this.fromRGB( + parseInt(m[1].substr(0,2),16) / 255, + parseInt(m[1].substr(2,2),16) / 255, + parseInt(m[1].substr(4,2),16) / 255, + flags + ); + } else { // 3-char notation + this.fromRGB( + parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255, + parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255, + parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255, + flags + ); + } + return true; + } + }; + + + this.toString = function() { + return ( + (0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1) + ); + }; + + + function RGB_HSV(r, g, b) { + var n = Math.min(Math.min(r,g),b); + var v = Math.max(Math.max(r,g),b); + var m = v - n; + if(m === 0) { return [ null, 0, v ]; } + var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m); + return [ h===6?0:h, m/v, v ]; + } + + + function HSV_RGB(h, s, v) { + if(h === null) { return [ v, v, v ]; } + var i = Math.floor(h); + var f = i%2 ? h-i : 1-(h-i); + var m = v * (1 - s); + var n = v * (1 - s*f); + switch(i) { + case 6: + case 0: return [v,n,m]; + case 1: return [n,v,m]; + case 2: return [m,v,n]; + case 3: return [m,n,v]; + case 4: return [n,m,v]; + case 5: return [v,m,n]; + } + } + + + function removePicker() { + delete jscolor.picker.owner; + document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB); + } + + + function drawPicker(x, y) { + if(!jscolor.picker) { + jscolor.picker = { + box : document.createElement('div'), + boxB : document.createElement('div'), + pad : document.createElement('div'), + padB : document.createElement('div'), + padM : document.createElement('div'), + sld : document.createElement('div'), + sldB : document.createElement('div'), + sldM : document.createElement('div'), + btn : document.createElement('div'), + btnS : document.createElement('span'), + btnT : document.createTextNode(THIS.pickerCloseText) + }; + for(var i=0,segSize=4; i122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p + vendors = ['ms', 'moz', 'webkit', 'o'] + for vendor in vendors + if window.requestAnimationFrame + break + window.requestAnimationFrame = window[vendor + 'RequestAnimationFrame'] + window.cancelAnimationFrame = window[vendor + 'CancelAnimationFrame'] or window[vendor + 'CancelRequestAnimationFrame'] + + browserRequestAnimationFrame = null + lastId = 0 + isCancelled = {} + + if not requestAnimationFrame + window.requestAnimationFrame = (callback, element) -> + currTime = new Date().getTime() + timeToCall = Math.max(0, 16 - (currTime - lastTime)) + id = window.setTimeout(() -> + callback(currTime + timeToCall) + , timeToCall) + lastTime = currTime + timeToCall + return id + # This implementation should only be used with the setTimeout() + # version of window.requestAnimationFrame(). + window.cancelAnimationFrame = (id) -> + clearTimeout(id) + else if not window.cancelAnimationFrame + browserRequestAnimationFrame = window.requestAnimationFrame + window.requestAnimationFrame = (callback, element) -> + myId = ++lastId + browserRequestAnimationFrame(() -> + if not isCancelled[myId] + callback() + , element) + return myId + window.cancelAnimationFrame = (id) -> + isCancelled[id] = true + +String.prototype.hashCode = () -> + hash = 0 + if this.length == 0 + return hash + for i in [0...this.length] + char = this.charCodeAt(i) + hash = ((hash << 5) - hash) + char + hash = hash & hash # Convert to 32bit integer + return hash + +secondsToString = (sec) -> + hr = Math.floor(sec / 3600) + min = Math.floor((sec - (hr * 3600))/60) + sec -= ((hr * 3600) + (min * 60)) + sec += '' + min += '' + while min.length < 2 + min = '0' + min + while sec.length < 2 + sec = '0' + sec + hr = if hr then hr + ':' else '' + return hr + min + ':' + sec + +formatNumber = (num) -> + return addCommas(num.toFixed(0)) + +updateObjectValues = (obj1, obj2) -> + for own key, val of obj2 + obj1[key] = val + return obj1 + +mergeObjects = (obj1, obj2) -> + out = {} + for own key, val of obj1 + out[key] = val + for own key, val of obj2 + out[key] = val + return out + +addCommas = (nStr) -> + nStr += '' + x = nStr.split('.') + x1 = x[0] + x2 = '' + if x.length > 1 + x2 = '.' + x[1] + rgx = /(\d+)(\d{3})/ + while rgx.test(x1) + x1 = x1.replace(rgx, '$1' + ',' + '$2') + return x1 + x2 + +cutHex = (nStr) -> + if nStr.charAt(0) == "#" + return nStr.substring(1,7) + return nStr + +class ValueUpdater + animationSpeed: 32 + constructor: (addToAnimationQueue=true, @clear=true) -> + if addToAnimationQueue + AnimationUpdater.add(@) + + update: (force=false) -> + if force or @displayedValue != @value + if @ctx and @clear + @ctx.clearRect(0, 0, @canvas.width, @canvas.height) + diff = @value - @displayedValue + if Math.abs(diff / @animationSpeed) <= 0.001 + @displayedValue = @value + else + @displayedValue = @displayedValue + diff / @animationSpeed + @render() + return true + return false + +class BaseGauge extends ValueUpdater + displayScale: 1 + + setTextField: (textField) -> + @textField = if textField instanceof TextRenderer then textField else new TextRenderer(textField) + + setMinValue: (@minValue, updateStartValue=true) -> + if updateStartValue + @displayedValue = @minValue + for gauge in @gp or [] + gauge.displayedValue = @minValue + + setOptions: (options=null) -> + @options = mergeObjects(@options, options) + if @textField + @textField.el.style.fontSize = options.fontSize + 'px' + + if @options.angle > .5 + @gauge.options.angle = .5 + @configDisplayScale() + return @ + + configDisplayScale: () -> + prevDisplayScale = @displayScale + + if @options.highDpiSupport == false + delete @displayScale + else + devicePixelRatio = window.devicePixelRatio or 1 + backingStorePixelRatio = + @ctx.webkitBackingStorePixelRatio or + @ctx.mozBackingStorePixelRatio or + @ctx.msBackingStorePixelRatio or + @ctx.oBackingStorePixelRatio or + @ctx.backingStorePixelRatio or 1 + @displayScale = devicePixelRatio / backingStorePixelRatio + + if @displayScale != prevDisplayScale + width = @canvas.G__width or @canvas.width + height = @canvas.G__height or @canvas.height + @canvas.width = width * @displayScale + @canvas.height = height * @displayScale + @canvas.style.width = "#{width}px" + @canvas.style.height = "#{height}px" + @canvas.G__width = width + @canvas.G__height = height + + return @ + +class TextRenderer + constructor: (@el) -> + + # Default behaviour, override to customize rendering + render: (gauge) -> + @el.innerHTML = formatNumber(gauge.displayedValue) + +class AnimatedText extends ValueUpdater + displayedValue: 0 + value: 0 + + setVal: (value) -> + @value = 1 * value + + constructor: (@elem, @text=false) -> + @value = 1 * @elem.innerHTML + if @text + @value = 0 + render: () -> + if @text + textVal = secondsToString(@displayedValue.toFixed(0)) + else + textVal = addCommas(formatNumber(@displayedValue)) + @elem.innerHTML = textVal + +AnimatedTextFactory = + create: (objList) -> + out = [] + for elem in objList + out.push(new AnimatedText(elem)) + return out + +class GaugePointer extends ValueUpdater + displayedValue: 0 + value: 0 + options: + strokeWidth: 0.035 + length: 0.1 + color: "#000000" + + constructor: (@gauge) -> + @ctx = @gauge.ctx + @canvas = @gauge.canvas + super(false, false) + @setOptions() + + setOptions: (options=null) -> + updateObjectValues(@options, options) + @length = @canvas.height * @options.length + @strokeWidth = @canvas.height * @options.strokeWidth + @maxValue = @gauge.maxValue + @minValue = @gauge.minValue + @animationSpeed = @gauge.animationSpeed + @options.angle = @gauge.options.angle + + render: () -> + angle = @gauge.getAngle.call(@, @displayedValue) + centerX = @canvas.width / 2 + centerY = @canvas.height * 0.9 + + x = Math.round(centerX + @length * Math.cos(angle)) + y = Math.round(centerY + @length * Math.sin(angle)) + + startX = Math.round(centerX + @strokeWidth * Math.cos(angle - Math.PI/2)) + startY = Math.round(centerY + @strokeWidth * Math.sin(angle - Math.PI/2)) + + endX = Math.round(centerX + @strokeWidth * Math.cos(angle + Math.PI/2)) + endY = Math.round(centerY + @strokeWidth * Math.sin(angle + Math.PI/2)) + + @ctx.fillStyle = @options.color + @ctx.beginPath() + + @ctx.arc(centerX, centerY, @strokeWidth, 0, Math.PI*2, true) + @ctx.fill() + + @ctx.beginPath() + @ctx.moveTo(startX, startY) + @ctx.lineTo(x, y) + @ctx.lineTo(endX, endY) + @ctx.fill() + +class Bar + constructor: (@elem) -> + updateValues: (arrValues) -> + @value = arrValues[0] + @maxValue = arrValues[1] + @avgValue = arrValues[2] + @render() + + render: () -> + if @textField + @textField.text(formatNumber(@value)) + + if @maxValue == 0 + @maxValue = @avgValue * 2 + + valPercent = (@value / @maxValue) * 100 + avgPercent = (@avgValue / @maxValue) * 100 + + $(".bar-value", @elem).css({"width": valPercent + "%"}) + $(".typical-value", @elem).css({"width": avgPercent + "%"}) + +class Gauge extends BaseGauge + elem: null + value: [20] # we support multiple pointers + maxValue: 80 + minValue: 0 + displayedAngle: 0 + displayedValue: 0 + lineWidth: 40 + paddingBottom: 0.1 + percentColors: null, + options: + colorStart: "#6fadcf" + colorStop: undefined + gradientType: 0 # 0 : radial, 1 : linear + strokeColor: "#e0e0e0" + pointer: + length: 0.8 + strokeWidth: 0.035 + angle: 0.15 + lineWidth: 0.44 + fontSize: 40 + limitMax: false + + constructor: (@canvas) -> + super() + @percentColors = null + if typeof G_vmlCanvasManager != 'undefined' + @canvas = window.G_vmlCanvasManager.initElement(@canvas) + @ctx = @canvas.getContext('2d') + @gp = [new GaugePointer(@)] + @setOptions() + @render() + + setOptions: (options=null) -> + super(options) + @configPercentColors() + @lineWidth = @canvas.height * (1 - @paddingBottom) * @options.lineWidth # .2 - .7 + @radius = @canvas.height * (1 - @paddingBottom) - @lineWidth + @ctx.clearRect(0, 0, @canvas.width, @canvas.height) + @render() + for gauge in @gp + gauge.setOptions(@options.pointer) + gauge.render() + return @ + + configPercentColors: () -> + @percentColors = null; + if (@options.percentColors != undefined) + @percentColors = new Array() + for i in [0..(@options.percentColors.length-1)] + rval = parseInt((cutHex(@options.percentColors[i][1])).substring(0,2),16) + gval = parseInt((cutHex(@options.percentColors[i][1])).substring(2,4),16) + bval = parseInt((cutHex(@options.percentColors[i][1])).substring(4,6),16) + @percentColors[i] = { pct: @options.percentColors[i][0], color: { r: rval, g: gval, b: bval } } + + set: (value) -> + + if not (value instanceof Array) + value = [value] + # check if we have enough GaugePointers initialized + # lazy initialization + if value.length > @gp.length + for i in [0...(value.length - @gp.length)] + @gp.push(new GaugePointer(@)) + + # get max value and update pointer(s) + i = 0 + max_hit = false + + for val in value + if val > @maxValue + @maxValue = @value * 1.1 + max_hit = true + @gp[i].value = val + @gp[i++].setOptions({maxValue: @maxValue, angle: @options.angle}) + @value = value[value.length - 1] # TODO: Span maybe?? + + if max_hit + unless @options.limitMax + AnimationUpdater.run() + else + AnimationUpdater.run() + + getAngle: (value) -> + return (1 + @options.angle) * Math.PI + ((value - @minValue) / (@maxValue - @minValue)) * (1 - @options.angle * 2) * Math.PI + + getColorForPercentage: (pct, grad) -> + if pct == 0 + color = @percentColors[0].color; + else + color = @percentColors[@percentColors.length - 1].color; + for i in [0..(@percentColors.length - 1)] + if (pct <= @percentColors[i].pct) + if grad == true + # Gradually change between colors + startColor = @percentColors[i - 1] + endColor = @percentColors[i] + rangePct = (pct - startColor.pct) / (endColor.pct - startColor.pct) # How far between both colors + color = { + r: Math.floor(startColor.color.r * (1 - rangePct) + endColor.color.r * rangePct), + g: Math.floor(startColor.color.g * (1 - rangePct) + endColor.color.g * rangePct), + b: Math.floor(startColor.color.b * (1 - rangePct) + endColor.color.b * rangePct) + } + else + color = @percentColors[i].color + break + return 'rgb(' + [color.r, color.g, color.b].join(',') + ')' + + getColorForValue: (val, grad) -> + pct = (val - @minValue) / (@maxValue - @minValue) + return @getColorForPercentage(pct, grad); + + render: () -> + # Draw using canvas + w = @canvas.width / 2 + h = @canvas.height * (1 - @paddingBottom) + displayedAngle = @getAngle(@displayedValue) + if @textField + @textField.render(@) + + @ctx.lineCap = "butt" + if @options.customFillStyle != undefined + fillStyle = @options.customFillStyle(@) + else if @percentColors != null + fillStyle = @getColorForValue(@displayedValue, true) + else if @options.colorStop != undefined + if @options.gradientType == 0 + fillStyle = this.ctx.createRadialGradient(w, h, 9, w, h, 70); + else + fillStyle = this.ctx.createLinearGradient(0, 0, w, 0); + fillStyle.addColorStop(0, @options.colorStart) + fillStyle.addColorStop(1, @options.colorStop) + else + fillStyle = @options.colorStart + @ctx.strokeStyle = fillStyle + + @ctx.beginPath() + @ctx.arc(w, h, @radius, (1 + @options.angle) * Math.PI, displayedAngle, false) + @ctx.lineWidth = @lineWidth + @ctx.stroke() + + @ctx.strokeStyle = @options.strokeColor + @ctx.beginPath() + @ctx.arc(w, h, @radius, displayedAngle, (2 - @options.angle) * Math.PI, false) + @ctx.stroke() + for gauge in @gp + gauge.update(true) + + +class BaseDonut extends BaseGauge + lineWidth: 15 + displayedValue: 0 + value: 33 + maxValue: 80 + minValue: 0 + + options: + lineWidth: 0.10 + colorStart: "#6f6ea0" + colorStop: "#c0c0db" + strokeColor: "#eeeeee" + shadowColor: "#d5d5d5" + angle: 0.35 + + constructor: (@canvas) -> + super() + if typeof G_vmlCanvasManager != 'undefined' + @canvas = window.G_vmlCanvasManager.initElement(@canvas) + @ctx = @canvas.getContext('2d') + @setOptions() + @render() + + getAngle: (value) -> + return (1 - @options.angle) * Math.PI + ((value - @minValue) / (@maxValue - @minValue)) * ((2 + @options.angle) - (1 - @options.angle)) * Math.PI + + setOptions: (options=null) -> + super(options) + @lineWidth = @canvas.height * @options.lineWidth + @radius = @canvas.height / 2 - @lineWidth/2 + return @ + + set: (value) -> + @value = value + if @value > @maxValue + @maxValue = @value * 1.1 + AnimationUpdater.run() + + render: () -> + displayedAngle = @getAngle(@displayedValue) + w = @canvas.width / 2 + h = @canvas.height / 2 + + if @textField + @textField.render(@) + + grdFill = @ctx.createRadialGradient(w, h, 39, w, h, 70) + grdFill.addColorStop(0, @options.colorStart) + grdFill.addColorStop(1, @options.colorStop) + + start = @radius - @lineWidth / 2 + stop = @radius + @lineWidth / 2 + + @ctx.strokeStyle = @options.strokeColor + @ctx.beginPath() + @ctx.arc(w, h, @radius, (1 - @options.angle) * Math.PI, (2 + @options.angle) * Math.PI, false) + @ctx.lineWidth = @lineWidth + @ctx.lineCap = "round" + @ctx.stroke() + + @ctx.strokeStyle = grdFill + @ctx.beginPath() + @ctx.arc(w, h, @radius, (1 - @options.angle) * Math.PI, displayedAngle, false) + @ctx.stroke() + + +class Donut extends BaseDonut + strokeGradient: (w, h, start, stop) -> + grd = @ctx.createRadialGradient(w, h, start, w, h, stop) + grd.addColorStop(0, @options.shadowColor) + grd.addColorStop(0.12, @options._orgStrokeColor) + grd.addColorStop(0.88, @options._orgStrokeColor) + grd.addColorStop(1, @options.shadowColor) + return grd + + setOptions: (options=null) -> + super(options) + w = @canvas.width / 2 + h = @canvas.height / 2 + start = @radius - @lineWidth / 2 + stop = @radius + @lineWidth / 2 + @options._orgStrokeColor = @options.strokeColor + @options.strokeColor = @strokeGradient(w, h, start, stop) + return @ + +window.AnimationUpdater = + elements: [] + animId: null + + addAll: (list) -> + for elem in list + AnimationUpdater.elements.push(elem) + + add: (object) -> + AnimationUpdater.elements.push(object) + + run: () -> + animationFinished = true + for elem in AnimationUpdater.elements + if elem.update() + animationFinished = false + if not animationFinished + AnimationUpdater.animId = requestAnimationFrame(AnimationUpdater.run) + else + cancelAnimationFrame(AnimationUpdater.animId) + +window.Gauge = Gauge +window.Donut = Donut +window.BaseDonut = BaseDonut +window.TextRenderer = TextRenderer diff --git a/public/assets/vendors/gauge.js/dist/gauge.js b/public/assets/vendors/gauge.js/dist/gauge.js new file mode 100644 index 0000000..ba87e1f --- /dev/null +++ b/public/assets/vendors/gauge.js/dist/gauge.js @@ -0,0 +1,773 @@ +// Generated by CoffeeScript 1.6.3 +(function() { + var AnimatedText, AnimatedTextFactory, Bar, BaseDonut, BaseGauge, Donut, Gauge, GaugePointer, TextRenderer, ValueUpdater, addCommas, cutHex, formatNumber, mergeObjects, secondsToString, updateObjectValues, _ref, _ref1, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + (function() { + var browserRequestAnimationFrame, isCancelled, lastId, vendor, vendors, _i, _len; + vendors = ['ms', 'moz', 'webkit', 'o']; + for (_i = 0, _len = vendors.length; _i < _len; _i++) { + vendor = vendors[_i]; + if (window.requestAnimationFrame) { + break; + } + window.requestAnimationFrame = window[vendor + 'RequestAnimationFrame']; + window.cancelAnimationFrame = window[vendor + 'CancelAnimationFrame'] || window[vendor + 'CancelRequestAnimationFrame']; + } + browserRequestAnimationFrame = null; + lastId = 0; + isCancelled = {}; + if (!requestAnimationFrame) { + window.requestAnimationFrame = function(callback, element) { + var currTime, id, lastTime, timeToCall; + currTime = new Date().getTime(); + timeToCall = Math.max(0, 16 - (currTime - lastTime)); + id = window.setTimeout(function() { + return callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + return window.cancelAnimationFrame = function(id) { + return clearTimeout(id); + }; + } else if (!window.cancelAnimationFrame) { + browserRequestAnimationFrame = window.requestAnimationFrame; + window.requestAnimationFrame = function(callback, element) { + var myId; + myId = ++lastId; + browserRequestAnimationFrame(function() { + if (!isCancelled[myId]) { + return callback(); + } + }, element); + return myId; + }; + return window.cancelAnimationFrame = function(id) { + return isCancelled[id] = true; + }; + } + })(); + + String.prototype.hashCode = function() { + var char, hash, i, _i, _ref; + hash = 0; + if (this.length === 0) { + return hash; + } + for (i = _i = 0, _ref = this.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { + char = this.charCodeAt(i); + hash = ((hash << 5) - hash) + char; + hash = hash & hash; + } + return hash; + }; + + secondsToString = function(sec) { + var hr, min; + hr = Math.floor(sec / 3600); + min = Math.floor((sec - (hr * 3600)) / 60); + sec -= (hr * 3600) + (min * 60); + sec += ''; + min += ''; + while (min.length < 2) { + min = '0' + min; + } + while (sec.length < 2) { + sec = '0' + sec; + } + hr = hr ? hr + ':' : ''; + return hr + min + ':' + sec; + }; + + formatNumber = function(num) { + return addCommas(num.toFixed(0)); + }; + + updateObjectValues = function(obj1, obj2) { + var key, val; + for (key in obj2) { + if (!__hasProp.call(obj2, key)) continue; + val = obj2[key]; + obj1[key] = val; + } + return obj1; + }; + + mergeObjects = function(obj1, obj2) { + var key, out, val; + out = {}; + for (key in obj1) { + if (!__hasProp.call(obj1, key)) continue; + val = obj1[key]; + out[key] = val; + } + for (key in obj2) { + if (!__hasProp.call(obj2, key)) continue; + val = obj2[key]; + out[key] = val; + } + return out; + }; + + addCommas = function(nStr) { + var rgx, x, x1, x2; + nStr += ''; + x = nStr.split('.'); + x1 = x[0]; + x2 = ''; + if (x.length > 1) { + x2 = '.' + x[1]; + } + rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, '$1' + ',' + '$2'); + } + return x1 + x2; + }; + + cutHex = function(nStr) { + if (nStr.charAt(0) === "#") { + return nStr.substring(1, 7); + } + return nStr; + }; + + ValueUpdater = (function() { + ValueUpdater.prototype.animationSpeed = 32; + + function ValueUpdater(addToAnimationQueue, clear) { + if (addToAnimationQueue == null) { + addToAnimationQueue = true; + } + this.clear = clear != null ? clear : true; + if (addToAnimationQueue) { + AnimationUpdater.add(this); + } + } + + ValueUpdater.prototype.update = function(force) { + var diff; + if (force == null) { + force = false; + } + if (force || this.displayedValue !== this.value) { + if (this.ctx && this.clear) { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + diff = this.value - this.displayedValue; + if (Math.abs(diff / this.animationSpeed) <= 0.001) { + this.displayedValue = this.value; + } else { + this.displayedValue = this.displayedValue + diff / this.animationSpeed; + } + this.render(); + return true; + } + return false; + }; + + return ValueUpdater; + + })(); + + BaseGauge = (function(_super) { + __extends(BaseGauge, _super); + + function BaseGauge() { + _ref = BaseGauge.__super__.constructor.apply(this, arguments); + return _ref; + } + + BaseGauge.prototype.displayScale = 1; + + BaseGauge.prototype.setTextField = function(textField) { + return this.textField = textField instanceof TextRenderer ? textField : new TextRenderer(textField); + }; + + BaseGauge.prototype.setMinValue = function(minValue, updateStartValue) { + var gauge, _i, _len, _ref1, _results; + this.minValue = minValue; + if (updateStartValue == null) { + updateStartValue = true; + } + if (updateStartValue) { + this.displayedValue = this.minValue; + _ref1 = this.gp || []; + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + gauge = _ref1[_i]; + _results.push(gauge.displayedValue = this.minValue); + } + return _results; + } + }; + + BaseGauge.prototype.setOptions = function(options) { + if (options == null) { + options = null; + } + this.options = mergeObjects(this.options, options); + if (this.textField) { + this.textField.el.style.fontSize = options.fontSize + 'px'; + } + if (this.options.angle > .5) { + this.gauge.options.angle = .5; + } + this.configDisplayScale(); + return this; + }; + + BaseGauge.prototype.configDisplayScale = function() { + var backingStorePixelRatio, devicePixelRatio, height, prevDisplayScale, width; + prevDisplayScale = this.displayScale; + if (this.options.highDpiSupport === false) { + delete this.displayScale; + } else { + devicePixelRatio = window.devicePixelRatio || 1; + backingStorePixelRatio = this.ctx.webkitBackingStorePixelRatio || this.ctx.mozBackingStorePixelRatio || this.ctx.msBackingStorePixelRatio || this.ctx.oBackingStorePixelRatio || this.ctx.backingStorePixelRatio || 1; + this.displayScale = devicePixelRatio / backingStorePixelRatio; + } + if (this.displayScale !== prevDisplayScale) { + width = this.canvas.G__width || this.canvas.width; + height = this.canvas.G__height || this.canvas.height; + this.canvas.width = width * this.displayScale; + this.canvas.height = height * this.displayScale; + this.canvas.style.width = "" + width + "px"; + this.canvas.style.height = "" + height + "px"; + this.canvas.G__width = width; + this.canvas.G__height = height; + } + return this; + }; + + return BaseGauge; + + })(ValueUpdater); + + TextRenderer = (function() { + function TextRenderer(el) { + this.el = el; + } + + TextRenderer.prototype.render = function(gauge) { + return this.el.innerHTML = formatNumber(gauge.displayedValue); + }; + + return TextRenderer; + + })(); + + AnimatedText = (function(_super) { + __extends(AnimatedText, _super); + + AnimatedText.prototype.displayedValue = 0; + + AnimatedText.prototype.value = 0; + + AnimatedText.prototype.setVal = function(value) { + return this.value = 1 * value; + }; + + function AnimatedText(elem, text) { + this.elem = elem; + this.text = text != null ? text : false; + this.value = 1 * this.elem.innerHTML; + if (this.text) { + this.value = 0; + } + } + + AnimatedText.prototype.render = function() { + var textVal; + if (this.text) { + textVal = secondsToString(this.displayedValue.toFixed(0)); + } else { + textVal = addCommas(formatNumber(this.displayedValue)); + } + return this.elem.innerHTML = textVal; + }; + + return AnimatedText; + + })(ValueUpdater); + + AnimatedTextFactory = { + create: function(objList) { + var elem, out, _i, _len; + out = []; + for (_i = 0, _len = objList.length; _i < _len; _i++) { + elem = objList[_i]; + out.push(new AnimatedText(elem)); + } + return out; + } + }; + + GaugePointer = (function(_super) { + __extends(GaugePointer, _super); + + GaugePointer.prototype.displayedValue = 0; + + GaugePointer.prototype.value = 0; + + GaugePointer.prototype.options = { + strokeWidth: 0.035, + length: 0.1, + color: "#000000" + }; + + function GaugePointer(gauge) { + this.gauge = gauge; + this.ctx = this.gauge.ctx; + this.canvas = this.gauge.canvas; + GaugePointer.__super__.constructor.call(this, false, false); + this.setOptions(); + } + + GaugePointer.prototype.setOptions = function(options) { + if (options == null) { + options = null; + } + updateObjectValues(this.options, options); + this.length = this.canvas.height * this.options.length; + this.strokeWidth = this.canvas.height * this.options.strokeWidth; + this.maxValue = this.gauge.maxValue; + this.minValue = this.gauge.minValue; + this.animationSpeed = this.gauge.animationSpeed; + return this.options.angle = this.gauge.options.angle; + }; + + GaugePointer.prototype.render = function() { + var angle, centerX, centerY, endX, endY, startX, startY, x, y; + angle = this.gauge.getAngle.call(this, this.displayedValue); + centerX = this.canvas.width / 2; + centerY = this.canvas.height * 0.9; + x = Math.round(centerX + this.length * Math.cos(angle)); + y = Math.round(centerY + this.length * Math.sin(angle)); + startX = Math.round(centerX + this.strokeWidth * Math.cos(angle - Math.PI / 2)); + startY = Math.round(centerY + this.strokeWidth * Math.sin(angle - Math.PI / 2)); + endX = Math.round(centerX + this.strokeWidth * Math.cos(angle + Math.PI / 2)); + endY = Math.round(centerY + this.strokeWidth * Math.sin(angle + Math.PI / 2)); + this.ctx.fillStyle = this.options.color; + this.ctx.beginPath(); + this.ctx.arc(centerX, centerY, this.strokeWidth, 0, Math.PI * 2, true); + this.ctx.fill(); + this.ctx.beginPath(); + this.ctx.moveTo(startX, startY); + this.ctx.lineTo(x, y); + this.ctx.lineTo(endX, endY); + return this.ctx.fill(); + }; + + return GaugePointer; + + })(ValueUpdater); + + Bar = (function() { + function Bar(elem) { + this.elem = elem; + } + + Bar.prototype.updateValues = function(arrValues) { + this.value = arrValues[0]; + this.maxValue = arrValues[1]; + this.avgValue = arrValues[2]; + return this.render(); + }; + + Bar.prototype.render = function() { + var avgPercent, valPercent; + if (this.textField) { + this.textField.text(formatNumber(this.value)); + } + if (this.maxValue === 0) { + this.maxValue = this.avgValue * 2; + } + valPercent = (this.value / this.maxValue) * 100; + avgPercent = (this.avgValue / this.maxValue) * 100; + $(".bar-value", this.elem).css({ + "width": valPercent + "%" + }); + return $(".typical-value", this.elem).css({ + "width": avgPercent + "%" + }); + }; + + return Bar; + + })(); + + Gauge = (function(_super) { + __extends(Gauge, _super); + + Gauge.prototype.elem = null; + + Gauge.prototype.value = [20]; + + Gauge.prototype.maxValue = 80; + + Gauge.prototype.minValue = 0; + + Gauge.prototype.displayedAngle = 0; + + Gauge.prototype.displayedValue = 0; + + Gauge.prototype.lineWidth = 40; + + Gauge.prototype.paddingBottom = 0.1; + + Gauge.prototype.percentColors = null; + + Gauge.prototype.options = { + colorStart: "#6fadcf", + colorStop: void 0, + gradientType: 0, + strokeColor: "#e0e0e0", + pointer: { + length: 0.8, + strokeWidth: 0.035 + }, + angle: 0.15, + lineWidth: 0.44, + fontSize: 40, + limitMax: false + }; + + function Gauge(canvas) { + this.canvas = canvas; + Gauge.__super__.constructor.call(this); + this.percentColors = null; + if (typeof G_vmlCanvasManager !== 'undefined') { + this.canvas = window.G_vmlCanvasManager.initElement(this.canvas); + } + this.ctx = this.canvas.getContext('2d'); + this.gp = [new GaugePointer(this)]; + this.setOptions(); + this.render(); + } + + Gauge.prototype.setOptions = function(options) { + var gauge, _i, _len, _ref1; + if (options == null) { + options = null; + } + Gauge.__super__.setOptions.call(this, options); + this.configPercentColors(); + this.lineWidth = this.canvas.height * (1 - this.paddingBottom) * this.options.lineWidth; + this.radius = this.canvas.height * (1 - this.paddingBottom) - this.lineWidth; + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.render(); + _ref1 = this.gp; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + gauge = _ref1[_i]; + gauge.setOptions(this.options.pointer); + gauge.render(); + } + return this; + }; + + Gauge.prototype.configPercentColors = function() { + var bval, gval, i, rval, _i, _ref1, _results; + this.percentColors = null; + if (this.options.percentColors !== void 0) { + this.percentColors = new Array(); + _results = []; + for (i = _i = 0, _ref1 = this.options.percentColors.length - 1; 0 <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = 0 <= _ref1 ? ++_i : --_i) { + rval = parseInt((cutHex(this.options.percentColors[i][1])).substring(0, 2), 16); + gval = parseInt((cutHex(this.options.percentColors[i][1])).substring(2, 4), 16); + bval = parseInt((cutHex(this.options.percentColors[i][1])).substring(4, 6), 16); + _results.push(this.percentColors[i] = { + pct: this.options.percentColors[i][0], + color: { + r: rval, + g: gval, + b: bval + } + }); + } + return _results; + } + }; + + Gauge.prototype.set = function(value) { + var i, max_hit, val, _i, _j, _len, _ref1; + if (!(value instanceof Array)) { + value = [value]; + } + if (value.length > this.gp.length) { + for (i = _i = 0, _ref1 = value.length - this.gp.length; 0 <= _ref1 ? _i < _ref1 : _i > _ref1; i = 0 <= _ref1 ? ++_i : --_i) { + this.gp.push(new GaugePointer(this)); + } + } + i = 0; + max_hit = false; + for (_j = 0, _len = value.length; _j < _len; _j++) { + val = value[_j]; + if (val > this.maxValue) { + this.maxValue = this.value * 1.1; + max_hit = true; + } + this.gp[i].value = val; + this.gp[i++].setOptions({ + maxValue: this.maxValue, + angle: this.options.angle + }); + } + this.value = value[value.length - 1]; + if (max_hit) { + if (!this.options.limitMax) { + return AnimationUpdater.run(); + } + } else { + return AnimationUpdater.run(); + } + }; + + Gauge.prototype.getAngle = function(value) { + return (1 + this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * (1 - this.options.angle * 2) * Math.PI; + }; + + Gauge.prototype.getColorForPercentage = function(pct, grad) { + var color, endColor, i, rangePct, startColor, _i, _ref1; + if (pct === 0) { + color = this.percentColors[0].color; + } else { + color = this.percentColors[this.percentColors.length - 1].color; + for (i = _i = 0, _ref1 = this.percentColors.length - 1; 0 <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = 0 <= _ref1 ? ++_i : --_i) { + if (pct <= this.percentColors[i].pct) { + if (grad === true) { + startColor = this.percentColors[i - 1]; + endColor = this.percentColors[i]; + rangePct = (pct - startColor.pct) / (endColor.pct - startColor.pct); + color = { + r: Math.floor(startColor.color.r * (1 - rangePct) + endColor.color.r * rangePct), + g: Math.floor(startColor.color.g * (1 - rangePct) + endColor.color.g * rangePct), + b: Math.floor(startColor.color.b * (1 - rangePct) + endColor.color.b * rangePct) + }; + } else { + color = this.percentColors[i].color; + } + break; + } + } + } + return 'rgb(' + [color.r, color.g, color.b].join(',') + ')'; + }; + + Gauge.prototype.getColorForValue = function(val, grad) { + var pct; + pct = (val - this.minValue) / (this.maxValue - this.minValue); + return this.getColorForPercentage(pct, grad); + }; + + Gauge.prototype.render = function() { + var displayedAngle, fillStyle, gauge, h, w, _i, _len, _ref1, _results; + w = this.canvas.width / 2; + h = this.canvas.height * (1 - this.paddingBottom); + displayedAngle = this.getAngle(this.displayedValue); + if (this.textField) { + this.textField.render(this); + } + this.ctx.lineCap = "butt"; + if (this.options.customFillStyle !== void 0) { + fillStyle = this.options.customFillStyle(this); + } else if (this.percentColors !== null) { + fillStyle = this.getColorForValue(this.displayedValue, true); + } else if (this.options.colorStop !== void 0) { + if (this.options.gradientType === 0) { + fillStyle = this.ctx.createRadialGradient(w, h, 9, w, h, 70); + } else { + fillStyle = this.ctx.createLinearGradient(0, 0, w, 0); + } + fillStyle.addColorStop(0, this.options.colorStart); + fillStyle.addColorStop(1, this.options.colorStop); + } else { + fillStyle = this.options.colorStart; + } + this.ctx.strokeStyle = fillStyle; + this.ctx.beginPath(); + this.ctx.arc(w, h, this.radius, (1 + this.options.angle) * Math.PI, displayedAngle, false); + this.ctx.lineWidth = this.lineWidth; + this.ctx.stroke(); + this.ctx.strokeStyle = this.options.strokeColor; + this.ctx.beginPath(); + this.ctx.arc(w, h, this.radius, displayedAngle, (2 - this.options.angle) * Math.PI, false); + this.ctx.stroke(); + _ref1 = this.gp; + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + gauge = _ref1[_i]; + _results.push(gauge.update(true)); + } + return _results; + }; + + return Gauge; + + })(BaseGauge); + + BaseDonut = (function(_super) { + __extends(BaseDonut, _super); + + BaseDonut.prototype.lineWidth = 15; + + BaseDonut.prototype.displayedValue = 0; + + BaseDonut.prototype.value = 33; + + BaseDonut.prototype.maxValue = 80; + + BaseDonut.prototype.minValue = 0; + + BaseDonut.prototype.options = { + lineWidth: 0.10, + colorStart: "#6f6ea0", + colorStop: "#c0c0db", + strokeColor: "#eeeeee", + shadowColor: "#d5d5d5", + angle: 0.35 + }; + + function BaseDonut(canvas) { + this.canvas = canvas; + BaseDonut.__super__.constructor.call(this); + if (typeof G_vmlCanvasManager !== 'undefined') { + this.canvas = window.G_vmlCanvasManager.initElement(this.canvas); + } + this.ctx = this.canvas.getContext('2d'); + this.setOptions(); + this.render(); + } + + BaseDonut.prototype.getAngle = function(value) { + return (1 - this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * ((2 + this.options.angle) - (1 - this.options.angle)) * Math.PI; + }; + + BaseDonut.prototype.setOptions = function(options) { + if (options == null) { + options = null; + } + BaseDonut.__super__.setOptions.call(this, options); + this.lineWidth = this.canvas.height * this.options.lineWidth; + this.radius = this.canvas.height / 2 - this.lineWidth / 2; + return this; + }; + + BaseDonut.prototype.set = function(value) { + this.value = value; + if (this.value > this.maxValue) { + this.maxValue = this.value * 1.1; + } + return AnimationUpdater.run(); + }; + + BaseDonut.prototype.render = function() { + var displayedAngle, grdFill, h, start, stop, w; + displayedAngle = this.getAngle(this.displayedValue); + w = this.canvas.width / 2; + h = this.canvas.height / 2; + if (this.textField) { + this.textField.render(this); + } + grdFill = this.ctx.createRadialGradient(w, h, 39, w, h, 70); + grdFill.addColorStop(0, this.options.colorStart); + grdFill.addColorStop(1, this.options.colorStop); + start = this.radius - this.lineWidth / 2; + stop = this.radius + this.lineWidth / 2; + this.ctx.strokeStyle = this.options.strokeColor; + this.ctx.beginPath(); + this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, (2 + this.options.angle) * Math.PI, false); + this.ctx.lineWidth = this.lineWidth; + this.ctx.lineCap = "round"; + this.ctx.stroke(); + this.ctx.strokeStyle = grdFill; + this.ctx.beginPath(); + this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, displayedAngle, false); + return this.ctx.stroke(); + }; + + return BaseDonut; + + })(BaseGauge); + + Donut = (function(_super) { + __extends(Donut, _super); + + function Donut() { + _ref1 = Donut.__super__.constructor.apply(this, arguments); + return _ref1; + } + + Donut.prototype.strokeGradient = function(w, h, start, stop) { + var grd; + grd = this.ctx.createRadialGradient(w, h, start, w, h, stop); + grd.addColorStop(0, this.options.shadowColor); + grd.addColorStop(0.12, this.options._orgStrokeColor); + grd.addColorStop(0.88, this.options._orgStrokeColor); + grd.addColorStop(1, this.options.shadowColor); + return grd; + }; + + Donut.prototype.setOptions = function(options) { + var h, start, stop, w; + if (options == null) { + options = null; + } + Donut.__super__.setOptions.call(this, options); + w = this.canvas.width / 2; + h = this.canvas.height / 2; + start = this.radius - this.lineWidth / 2; + stop = this.radius + this.lineWidth / 2; + this.options._orgStrokeColor = this.options.strokeColor; + this.options.strokeColor = this.strokeGradient(w, h, start, stop); + return this; + }; + + return Donut; + + })(BaseDonut); + + window.AnimationUpdater = { + elements: [], + animId: null, + addAll: function(list) { + var elem, _i, _len, _results; + _results = []; + for (_i = 0, _len = list.length; _i < _len; _i++) { + elem = list[_i]; + _results.push(AnimationUpdater.elements.push(elem)); + } + return _results; + }, + add: function(object) { + return AnimationUpdater.elements.push(object); + }, + run: function() { + var animationFinished, elem, _i, _len, _ref2; + animationFinished = true; + _ref2 = AnimationUpdater.elements; + for (_i = 0, _len = _ref2.length; _i < _len; _i++) { + elem = _ref2[_i]; + if (elem.update()) { + animationFinished = false; + } + } + if (!animationFinished) { + return AnimationUpdater.animId = requestAnimationFrame(AnimationUpdater.run); + } else { + return cancelAnimationFrame(AnimationUpdater.animId); + } + } + }; + + window.Gauge = Gauge; + + window.Donut = Donut; + + window.BaseDonut = BaseDonut; + + window.TextRenderer = TextRenderer; + +}).call(this); diff --git a/public/assets/vendors/gauge.js/dist/gauge.min.js b/public/assets/vendors/gauge.js/dist/gauge.min.js new file mode 100644 index 0000000..243f883 --- /dev/null +++ b/public/assets/vendors/gauge.js/dist/gauge.min.js @@ -0,0 +1,61 @@ + +(function(){var AnimatedText,AnimatedTextFactory,Bar,BaseDonut,BaseGauge,Donut,Gauge,GaugePointer,TextRenderer,ValueUpdater,addCommas,cutHex,formatNumber,mergeObjects,secondsToString,updateObjectValues,_ref,_ref1,__hasProp={}.hasOwnProperty,__extends=function(child,parent){for(var key in parent){if(__hasProp.call(parent,key))child[key]=parent[key];}function ctor(){this.constructor=child;}ctor.prototype=parent.prototype;child.prototype=new ctor();child.__super__=parent.prototype;return child;};(function(){var browserRequestAnimationFrame,isCancelled,lastId,vendor,vendors,_i,_len;vendors=['ms','moz','webkit','o'];for(_i=0,_len=vendors.length;_i<_len;_i++){vendor=vendors[_i];if(window.requestAnimationFrame){break;} +window.requestAnimationFrame=window[vendor+'RequestAnimationFrame'];window.cancelAnimationFrame=window[vendor+'CancelAnimationFrame']||window[vendor+'CancelRequestAnimationFrame'];} +browserRequestAnimationFrame=null;lastId=0;isCancelled={};if(!requestAnimationFrame){window.requestAnimationFrame=function(callback,element){var currTime,id,lastTime,timeToCall;currTime=new Date().getTime();timeToCall=Math.max(0,16-(currTime-lastTime));id=window.setTimeout(function(){return callback(currTime+timeToCall);},timeToCall);lastTime=currTime+timeToCall;return id;};return window.cancelAnimationFrame=function(id){return clearTimeout(id);};}else if(!window.cancelAnimationFrame){browserRequestAnimationFrame=window.requestAnimationFrame;window.requestAnimationFrame=function(callback,element){var myId;myId=++lastId;browserRequestAnimationFrame(function(){if(!isCancelled[myId]){return callback();}},element);return myId;};return window.cancelAnimationFrame=function(id){return isCancelled[id]=true;};}})();String.prototype.hashCode=function(){var char,hash,i,_i,_ref;hash=0;if(this.length===0){return hash;} +for(i=_i=0,_ref=this.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){char=this.charCodeAt(i);hash=((hash<<5)-hash)+char;hash=hash&hash;} +return hash;};secondsToString=function(sec){var hr,min;hr=Math.floor(sec/3600);min=Math.floor((sec-(hr*3600))/60);sec-=(hr*3600)+(min*60);sec+='';min+='';while(min.length<2){min='0'+min;} +while(sec.length<2){sec='0'+sec;} +hr=hr?hr+':':'';return hr+min+':'+sec;};formatNumber=function(num){return addCommas(num.toFixed(0));};updateObjectValues=function(obj1,obj2){var key,val;for(key in obj2){if(!__hasProp.call(obj2,key))continue;val=obj2[key];obj1[key]=val;} +return obj1;};mergeObjects=function(obj1,obj2){var key,out,val;out={};for(key in obj1){if(!__hasProp.call(obj1,key))continue;val=obj1[key];out[key]=val;} +for(key in obj2){if(!__hasProp.call(obj2,key))continue;val=obj2[key];out[key]=val;} +return out;};addCommas=function(nStr){var rgx,x,x1,x2;nStr+='';x=nStr.split('.');x1=x[0];x2='';if(x.length>1){x2='.'+x[1];} +rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,'$1'+','+'$2');} +return x1+x2;};cutHex=function(nStr){if(nStr.charAt(0)==="#"){return nStr.substring(1,7);} +return nStr;};ValueUpdater=(function(){ValueUpdater.prototype.animationSpeed=32;function ValueUpdater(addToAnimationQueue,clear){if(addToAnimationQueue==null){addToAnimationQueue=true;} +this.clear=clear!=null?clear:true;if(addToAnimationQueue){AnimationUpdater.add(this);}} +ValueUpdater.prototype.update=function(force){var diff;if(force==null){force=false;} +if(force||this.displayedValue!==this.value){if(this.ctx&&this.clear){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);} +diff=this.value-this.displayedValue;if(Math.abs(diff/this.animationSpeed)<=0.001){this.displayedValue=this.value;}else{this.displayedValue=this.displayedValue+diff/this.animationSpeed;} +this.render();return true;} +return false;};return ValueUpdater;})();BaseGauge=(function(_super){__extends(BaseGauge,_super);function BaseGauge(){_ref=BaseGauge.__super__.constructor.apply(this,arguments);return _ref;} +BaseGauge.prototype.displayScale=1;BaseGauge.prototype.setTextField=function(textField){return this.textField=textField instanceof TextRenderer?textField:new TextRenderer(textField);};BaseGauge.prototype.setMinValue=function(minValue,updateStartValue){var gauge,_i,_len,_ref1,_results;this.minValue=minValue;if(updateStartValue==null){updateStartValue=true;} +if(updateStartValue){this.displayedValue=this.minValue;_ref1=this.gp||[];_results=[];for(_i=0,_len=_ref1.length;_i<_len;_i++){gauge=_ref1[_i];_results.push(gauge.displayedValue=this.minValue);} +return _results;}};BaseGauge.prototype.setOptions=function(options){if(options==null){options=null;} +this.options=mergeObjects(this.options,options);if(this.textField){this.textField.el.style.fontSize=options.fontSize+'px';} +if(this.options.angle>.5){this.gauge.options.angle=.5;} +this.configDisplayScale();return this;};BaseGauge.prototype.configDisplayScale=function(){var backingStorePixelRatio,devicePixelRatio,height,prevDisplayScale,width;prevDisplayScale=this.displayScale;if(this.options.highDpiSupport===false){delete this.displayScale;}else{devicePixelRatio=window.devicePixelRatio||1;backingStorePixelRatio=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1;this.displayScale=devicePixelRatio/backingStorePixelRatio;} +if(this.displayScale!==prevDisplayScale){width=this.canvas.G__width||this.canvas.width;height=this.canvas.G__height||this.canvas.height;this.canvas.width=width*this.displayScale;this.canvas.height=height*this.displayScale;this.canvas.style.width=""+width+"px";this.canvas.style.height=""+height+"px";this.canvas.G__width=width;this.canvas.G__height=height;} +return this;};return BaseGauge;})(ValueUpdater);TextRenderer=(function(){function TextRenderer(el){this.el=el;} +TextRenderer.prototype.render=function(gauge){return this.el.innerHTML=formatNumber(gauge.displayedValue);};return TextRenderer;})();AnimatedText=(function(_super){__extends(AnimatedText,_super);AnimatedText.prototype.displayedValue=0;AnimatedText.prototype.value=0;AnimatedText.prototype.setVal=function(value){return this.value=1*value;};function AnimatedText(elem,text){this.elem=elem;this.text=text!=null?text:false;this.value=1*this.elem.innerHTML;if(this.text){this.value=0;}} +AnimatedText.prototype.render=function(){var textVal;if(this.text){textVal=secondsToString(this.displayedValue.toFixed(0));}else{textVal=addCommas(formatNumber(this.displayedValue));} +return this.elem.innerHTML=textVal;};return AnimatedText;})(ValueUpdater);AnimatedTextFactory={create:function(objList){var elem,out,_i,_len;out=[];for(_i=0,_len=objList.length;_i<_len;_i++){elem=objList[_i];out.push(new AnimatedText(elem));} +return out;}};GaugePointer=(function(_super){__extends(GaugePointer,_super);GaugePointer.prototype.displayedValue=0;GaugePointer.prototype.value=0;GaugePointer.prototype.options={strokeWidth:0.035,length:0.1,color:"#000000"};function GaugePointer(gauge){this.gauge=gauge;this.ctx=this.gauge.ctx;this.canvas=this.gauge.canvas;GaugePointer.__super__.constructor.call(this,false,false);this.setOptions();} +GaugePointer.prototype.setOptions=function(options){if(options==null){options=null;} +updateObjectValues(this.options,options);this.length=this.canvas.height*this.options.length;this.strokeWidth=this.canvas.height*this.options.strokeWidth;this.maxValue=this.gauge.maxValue;this.minValue=this.gauge.minValue;this.animationSpeed=this.gauge.animationSpeed;return this.options.angle=this.gauge.options.angle;};GaugePointer.prototype.render=function(){var angle,centerX,centerY,endX,endY,startX,startY,x,y;angle=this.gauge.getAngle.call(this,this.displayedValue);centerX=this.canvas.width/2;centerY=this.canvas.height*0.9;x=Math.round(centerX+this.length*Math.cos(angle));y=Math.round(centerY+this.length*Math.sin(angle));startX=Math.round(centerX+this.strokeWidth*Math.cos(angle-Math.PI/2));startY=Math.round(centerY+this.strokeWidth*Math.sin(angle-Math.PI/2));endX=Math.round(centerX+this.strokeWidth*Math.cos(angle+Math.PI/2));endY=Math.round(centerY+this.strokeWidth*Math.sin(angle+Math.PI/2));this.ctx.fillStyle=this.options.color;this.ctx.beginPath();this.ctx.arc(centerX,centerY,this.strokeWidth,0,Math.PI*2,true);this.ctx.fill();this.ctx.beginPath();this.ctx.moveTo(startX,startY);this.ctx.lineTo(x,y);this.ctx.lineTo(endX,endY);return this.ctx.fill();};return GaugePointer;})(ValueUpdater);Bar=(function(){function Bar(elem){this.elem=elem;} +Bar.prototype.updateValues=function(arrValues){this.value=arrValues[0];this.maxValue=arrValues[1];this.avgValue=arrValues[2];return this.render();};Bar.prototype.render=function(){var avgPercent,valPercent;if(this.textField){this.textField.text(formatNumber(this.value));} +if(this.maxValue===0){this.maxValue=this.avgValue*2;} +valPercent=(this.value/this.maxValue)*100;avgPercent=(this.avgValue/this.maxValue)*100;$(".bar-value",this.elem).css({"width":valPercent+"%"});return $(".typical-value",this.elem).css({"width":avgPercent+"%"});};return Bar;})();Gauge=(function(_super){__extends(Gauge,_super);Gauge.prototype.elem=null;Gauge.prototype.value=[20];Gauge.prototype.maxValue=80;Gauge.prototype.minValue=0;Gauge.prototype.displayedAngle=0;Gauge.prototype.displayedValue=0;Gauge.prototype.lineWidth=40;Gauge.prototype.paddingBottom=0.1;Gauge.prototype.percentColors=null;Gauge.prototype.options={colorStart:"#6fadcf",colorStop:void 0,gradientType:0,strokeColor:"#e0e0e0",pointer:{length:0.8,strokeWidth:0.035},angle:0.15,lineWidth:0.44,fontSize:40,limitMax:false};function Gauge(canvas){this.canvas=canvas;Gauge.__super__.constructor.call(this);this.percentColors=null;if(typeof G_vmlCanvasManager!=='undefined'){this.canvas=window.G_vmlCanvasManager.initElement(this.canvas);} +this.ctx=this.canvas.getContext('2d');this.gp=[new GaugePointer(this)];this.setOptions();this.render();} +Gauge.prototype.setOptions=function(options){var gauge,_i,_len,_ref1;if(options==null){options=null;} +Gauge.__super__.setOptions.call(this,options);this.configPercentColors();this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth;this.radius=this.canvas.height*(1-this.paddingBottom)-this.lineWidth;this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);this.render();_ref1=this.gp;for(_i=0,_len=_ref1.length;_i<_len;_i++){gauge=_ref1[_i];gauge.setOptions(this.options.pointer);gauge.render();} +return this;};Gauge.prototype.configPercentColors=function(){var bval,gval,i,rval,_i,_ref1,_results;this.percentColors=null;if(this.options.percentColors!==void 0){this.percentColors=new Array();_results=[];for(i=_i=0,_ref1=this.options.percentColors.length-1;0<=_ref1?_i<=_ref1:_i>=_ref1;i=0<=_ref1?++_i:--_i){rval=parseInt((cutHex(this.options.percentColors[i][1])).substring(0,2),16);gval=parseInt((cutHex(this.options.percentColors[i][1])).substring(2,4),16);bval=parseInt((cutHex(this.options.percentColors[i][1])).substring(4,6),16);_results.push(this.percentColors[i]={pct:this.options.percentColors[i][0],color:{r:rval,g:gval,b:bval}});} +return _results;}};Gauge.prototype.set=function(value){var i,max_hit,val,_i,_j,_len,_ref1;if(!(value instanceof Array)){value=[value];} +if(value.length>this.gp.length){for(i=_i=0,_ref1=value.length-this.gp.length;0<=_ref1?_i<_ref1:_i>_ref1;i=0<=_ref1?++_i:--_i){this.gp.push(new GaugePointer(this));}} +i=0;max_hit=false;for(_j=0,_len=value.length;_j<_len;_j++){val=value[_j];if(val>this.maxValue){this.maxValue=this.value*1.1;max_hit=true;} +this.gp[i].value=val;this.gp[i++].setOptions({maxValue:this.maxValue,angle:this.options.angle});} +this.value=value[value.length-1];if(max_hit){if(!this.options.limitMax){return AnimationUpdater.run();}}else{return AnimationUpdater.run();}};Gauge.prototype.getAngle=function(value){return(1+this.options.angle)*Math.PI+((value-this.minValue)/(this.maxValue-this.minValue))*(1-this.options.angle*2)*Math.PI;};Gauge.prototype.getColorForPercentage=function(pct,grad){var color,endColor,i,rangePct,startColor,_i,_ref1;if(pct===0){color=this.percentColors[0].color;}else{color=this.percentColors[this.percentColors.length-1].color;for(i=_i=0,_ref1=this.percentColors.length-1;0<=_ref1?_i<=_ref1:_i>=_ref1;i=0<=_ref1?++_i:--_i){if(pct<=this.percentColors[i].pct){if(grad===true){startColor=this.percentColors[i-1];endColor=this.percentColors[i];rangePct=(pct-startColor.pct)/(endColor.pct-startColor.pct);color={r:Math.floor(startColor.color.r*(1-rangePct)+endColor.color.r*rangePct),g:Math.floor(startColor.color.g*(1-rangePct)+endColor.color.g*rangePct),b:Math.floor(startColor.color.b*(1-rangePct)+endColor.color.b*rangePct)};}else{color=this.percentColors[i].color;} +break;}}} +return'rgb('+[color.r,color.g,color.b].join(',')+')';};Gauge.prototype.getColorForValue=function(val,grad){var pct;pct=(val-this.minValue)/(this.maxValue-this.minValue);return this.getColorForPercentage(pct,grad);};Gauge.prototype.render=function(){var displayedAngle,fillStyle,gauge,h,w,_i,_len,_ref1,_results;w=this.canvas.width/2;h=this.canvas.height*(1-this.paddingBottom);displayedAngle=this.getAngle(this.displayedValue);if(this.textField){this.textField.render(this);} +this.ctx.lineCap="butt";if(this.options.customFillStyle!==void 0){fillStyle=this.options.customFillStyle(this);}else if(this.percentColors!==null){fillStyle=this.getColorForValue(this.displayedValue,true);}else if(this.options.colorStop!==void 0){if(this.options.gradientType===0){fillStyle=this.ctx.createRadialGradient(w,h,9,w,h,70);}else{fillStyle=this.ctx.createLinearGradient(0,0,w,0);} +fillStyle.addColorStop(0,this.options.colorStart);fillStyle.addColorStop(1,this.options.colorStop);}else{fillStyle=this.options.colorStart;} +this.ctx.strokeStyle=fillStyle;this.ctx.beginPath();this.ctx.arc(w,h,this.radius,(1+this.options.angle)*Math.PI,displayedAngle,false);this.ctx.lineWidth=this.lineWidth;this.ctx.stroke();this.ctx.strokeStyle=this.options.strokeColor;this.ctx.beginPath();this.ctx.arc(w,h,this.radius,displayedAngle,(2-this.options.angle)*Math.PI,false);this.ctx.stroke();_ref1=this.gp;_results=[];for(_i=0,_len=_ref1.length;_i<_len;_i++){gauge=_ref1[_i];_results.push(gauge.update(true));} +return _results;};return Gauge;})(BaseGauge);BaseDonut=(function(_super){__extends(BaseDonut,_super);BaseDonut.prototype.lineWidth=15;BaseDonut.prototype.displayedValue=0;BaseDonut.prototype.value=33;BaseDonut.prototype.maxValue=80;BaseDonut.prototype.minValue=0;BaseDonut.prototype.options={lineWidth:0.10,colorStart:"#6f6ea0",colorStop:"#c0c0db",strokeColor:"#eeeeee",shadowColor:"#d5d5d5",angle:0.35};function BaseDonut(canvas){this.canvas=canvas;BaseDonut.__super__.constructor.call(this);if(typeof G_vmlCanvasManager!=='undefined'){this.canvas=window.G_vmlCanvasManager.initElement(this.canvas);} +this.ctx=this.canvas.getContext('2d');this.setOptions();this.render();} +BaseDonut.prototype.getAngle=function(value){return(1-this.options.angle)*Math.PI+((value-this.minValue)/(this.maxValue-this.minValue))*((2+this.options.angle)-(1-this.options.angle))*Math.PI;};BaseDonut.prototype.setOptions=function(options){if(options==null){options=null;} +BaseDonut.__super__.setOptions.call(this,options);this.lineWidth=this.canvas.height*this.options.lineWidth;this.radius=this.canvas.height/2-this.lineWidth/2;return this;};BaseDonut.prototype.set=function(value){this.value=value;if(this.value>this.maxValue){this.maxValue=this.value*1.1;} +return AnimationUpdater.run();};BaseDonut.prototype.render=function(){var displayedAngle,grdFill,h,start,stop,w;displayedAngle=this.getAngle(this.displayedValue);w=this.canvas.width/2;h=this.canvas.height/2;if(this.textField){this.textField.render(this);} +grdFill=this.ctx.createRadialGradient(w,h,39,w,h,70);grdFill.addColorStop(0,this.options.colorStart);grdFill.addColorStop(1,this.options.colorStop);start=this.radius-this.lineWidth/2;stop=this.radius+this.lineWidth/2;this.ctx.strokeStyle=this.options.strokeColor;this.ctx.beginPath();this.ctx.arc(w,h,this.radius,(1-this.options.angle)*Math.PI,(2+this.options.angle)*Math.PI,false);this.ctx.lineWidth=this.lineWidth;this.ctx.lineCap="round";this.ctx.stroke();this.ctx.strokeStyle=grdFill;this.ctx.beginPath();this.ctx.arc(w,h,this.radius,(1-this.options.angle)*Math.PI,displayedAngle,false);return this.ctx.stroke();};return BaseDonut;})(BaseGauge);Donut=(function(_super){__extends(Donut,_super);function Donut(){_ref1=Donut.__super__.constructor.apply(this,arguments);return _ref1;} +Donut.prototype.strokeGradient=function(w,h,start,stop){var grd;grd=this.ctx.createRadialGradient(w,h,start,w,h,stop);grd.addColorStop(0,this.options.shadowColor);grd.addColorStop(0.12,this.options._orgStrokeColor);grd.addColorStop(0.88,this.options._orgStrokeColor);grd.addColorStop(1,this.options.shadowColor);return grd;};Donut.prototype.setOptions=function(options){var h,start,stop,w;if(options==null){options=null;} +Donut.__super__.setOptions.call(this,options);w=this.canvas.width/2;h=this.canvas.height/2;start=this.radius-this.lineWidth/2;stop=this.radius+this.lineWidth/2;this.options._orgStrokeColor=this.options.strokeColor;this.options.strokeColor=this.strokeGradient(w,h,start,stop);return this;};return Donut;})(BaseDonut);window.AnimationUpdater={elements:[],animId:null,addAll:function(list){var elem,_i,_len,_results;_results=[];for(_i=0,_len=list.length;_i<_len;_i++){elem=list[_i];_results.push(AnimationUpdater.elements.push(elem));} +return _results;},add:function(object){return AnimationUpdater.elements.push(object);},run:function(){var animationFinished,elem,_i,_len,_ref2;animationFinished=true;_ref2=AnimationUpdater.elements;for(_i=0,_len=_ref2.length;_i<_len;_i++){elem=_ref2[_i];if(elem.update()){animationFinished=false;}} +if(!animationFinished){return AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run);}else{return cancelAnimationFrame(AnimationUpdater.animId);}}};window.Gauge=Gauge;window.Donut=Donut;window.BaseDonut=BaseDonut;window.TextRenderer=TextRenderer;}).call(this); \ No newline at end of file diff --git a/public/assets/vendors/gauge.js/favicon.ico b/public/assets/vendors/gauge.js/favicon.ico new file mode 100755 index 0000000..1b2a4bd Binary files /dev/null and b/public/assets/vendors/gauge.js/favicon.ico differ diff --git a/public/assets/vendors/gauge.js/index.html b/public/assets/vendors/gauge.js/index.html new file mode 100644 index 0000000..10497c0 --- /dev/null +++ b/public/assets/vendors/gauge.js/index.html @@ -0,0 +1,370 @@ + + + + gauge.js + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+

Example

+ +

Variant selection

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

Options:

+
+

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

Features

+
    +
  • No images, no external CSS - pure canvas
  • +
  • No dependencies (jQuery is supported, but not required)
  • +
  • Highly configurable
  • +
  • Resolution independent
  • +
  • Animated guage value changes (!)
  • +
  • Works in all major browsers
  • +
  • MIT License
  • +
+ +

Usage

+
+var opts = {
+  lines: 12, // The number of lines to draw
+  angle: 7, // The length of each line
+  lineWidth: 5, // The line thickness
+  pointer: {
+    length: 10, // The radius of the inner circle
+    strokeWidth: 0, // The rotation offset
+    color: '#000000' // Fill color
+  },
+  limitMax: 'false',   // If true, the pointer will not go past the end of the gauge
+  colorStart: '0',   // Colors
+  colorStop: '0',    // just experiment with them
+  strokeColor: '0',   // to see which ones work best for you
+  generateGradient: true
+};
+var target = document.getElementById('foo'); // your canvas element
+var gauge = new Gauge(target).setOptions(opts); // create sexy gauge!
+gauge.maxValue = 3000; // set max gauge value
+gauge.animationSpeed = 3000; // set animation speed (32 is default value)
+gauge.set(1500); // set actual value
+
+

+ The Gauge class handles drawing on canvas and starts the animation. +

+ +

Advanced options

+
    +
  • + Percentage color +

    If you want to control how Gauge behavaes in relation to the displayed value you can use the Guage option called percentColors. To use it add following entry to the options: +

    +percentColors = [[0.0, "#a9d70b" ], [0.50, "#f9c802"], [1.0, "#ff0000"]];
    +
    + see working example at JSFiddle

    +
  • +
+ +

jQuery plugin

+

+ Gauge.js does not require jQuery. Anyway, if you use jQuery you may use the following plugin: +

+
+$.fn.gauge = function(opts) {
+  this.each(function() {
+    var $this = $(this),
+        data = $this.data();
+
+    if (data.gauge) {
+      data.gauge.stop();
+      delete data.gauge;
+    }
+    if (opts !== false) {
+      data.gauge = new Gauge(this).setOptions(opts);
+    }
+  });
+  return this;
+};
+
+

Supported browsers

+ +

+ Gauge.js has been (not yet!) successfully tested in the following browsers: +

    +
  • Chrome
  • +
  • Safari 3.2+
  • +
  • Firefox 3.5+
  • +
  • IE 9
  • +
  • Opera 10.6+
  • +
  • Mobile Safari (iOS 3.2+)
  • +
  • Android 2.3+
  • +
+

+ +

Changes

+ +

Version 1.2.1 (9.03.2014)

+
    +
  • Proper handling of color params issue #47.
  • +
  • Moved percentage color to example/docs + JSFiddle
  • +
+ +

Version 1.2 (16.08.2012)

+
    +
  • Prototype chain fix. See issue #7.
  • +
  • Refactored code a bit to make it more flexible. Default class that has some extra features like gradient shadows is called Donut while more flexible one (for devs) is called BaseDonut - use it if you would don't need extra automatic stuff.
  • +
  • Ability to scale gauges (requested via email) - example at JSFiddle
  • +
+ +

Version 1.1 (15.08.2012)

+
    +
  • Fixed color picker bug in FF & Opera
  • +
  • Added a shadow option. See issue #5.
  • +
  • Added multiple pointer option (requested via email). This needed some code refactoring. No demo for it yet. Use array of values to check it ex. gauge.set([44, 554]);
  • +
  • Added wrapper for formatting text output issue #4.
  • +
+ +

Version 1.0 (27.6.2012)

+
    +
  • Initial release
  • +
+ +

Contact

+

+ + If you encounter any problems, please use the GitHub issue tracker.
+ If you like gauge.js and use it in the wild, let me know.
+ If you want to contact me, drop me a message via email
+

+
+ + + + + + + + \ No newline at end of file diff --git a/public/assets/vendors/iCheck/.bower.json b/public/assets/vendors/iCheck/.bower.json new file mode 100644 index 0000000..d352b0c --- /dev/null +++ b/public/assets/vendors/iCheck/.bower.json @@ -0,0 +1,51 @@ +{ + "name": "iCheck", + "version": "1.0.2", + "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)", + "keywords": [ + "icheck", + "checkbox", + "radio", + "input", + "field", + "form", + "custom", + "replacement", + "accessibility", + "skins", + "ui", + "checked", + "disabled", + "indeterminate" + ], + "main": [ + "./icheck.min.js" + ], + "dependencies": { + "jquery": ">=1.7" + }, + "ignore": [ + ".gitignore", + "CHANGELOG.md", + "README.md", + "demo/" + ], + "license": "MIT", + "authors": [ + { + "name": "Damir Sultanov", + "email": "info@fronteed.com", + "homepage": "http://fronteed.com/" + } + ], + "homepage": "http://fronteed.com/iCheck/", + "_release": "1.0.2", + "_resolution": { + "type": "version", + "tag": "1.0.2", + "commit": "8a6eb37bd7dab1e843c1b630c91c6398ff409d05" + }, + "_source": "https://github.com/fronteed/iCheck.git", + "_target": "^1.0.2", + "_originalSource": "icheck" +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/bower.json b/public/assets/vendors/iCheck/bower.json new file mode 100644 index 0000000..a2b8288 --- /dev/null +++ b/public/assets/vendors/iCheck/bower.json @@ -0,0 +1,42 @@ +{ + "name": "iCheck", + "version": "1.0.2", + "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)", + "keywords": [ + "icheck", + "checkbox", + "radio", + "input", + "field", + "form", + "custom", + "replacement", + "accessibility", + "skins", + "ui", + "checked", + "disabled", + "indeterminate" + ], + "main": [ + "./icheck.min.js" + ], + "dependencies": { + "jquery": ">=1.7" + }, + "ignore": [ + ".gitignore", + "CHANGELOG.md", + "README.md", + "demo/" + ], + "license": "MIT", + "authors": [ + { + "name": "Damir Sultanov", + "email": "info@fronteed.com", + "homepage": "http://fronteed.com/" + } + ], + "homepage": "http://fronteed.com/iCheck/" +} diff --git a/public/assets/vendors/iCheck/icheck.jquery.json b/public/assets/vendors/iCheck/icheck.jquery.json new file mode 100644 index 0000000..e7018a6 --- /dev/null +++ b/public/assets/vendors/iCheck/icheck.jquery.json @@ -0,0 +1,48 @@ +{ + "name": "icheck", + "version": "1.0.2", + "title": "iCheck", + "author": { + "name": "Damir Sultanov", + "email": "info@fronteed.com", + "homepage": "http://fronteed.com/" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://en.wikipedia.org/wiki/MIT_License" + } + ], + "dependencies": { + "jquery": ">=1.7" + }, + "description": "Highly customizable checkboxes and radio buttons (jQuery and Zepto). Features: identical inputs across different browsers and devices (both desktop and mobile), touch devices support (iOS, Android, BlackBerry, Windows Phone, Amazon Kindle), keyboard accessible inputs (Tab, Spacebar, Arrow up/down and other shortcuts), screenreader accessible inputs — (ARIA attributes for VoiceOver and others), customization freedom (use any HTML and CSS to style inputs or try 6 Retina-ready skins), lightweight size (1 kb gzipped). Provides 32 options to customize checkboxes and radio buttons, 11 callbacks to handle changes, 9 methods to make changes programmatically. Saves changes to original inputs, works carefully with any selectors.", + "keywords": [ + "checkbox", + "radio", + "input", + "field", + "form", + "desktop", + "mobile", + "custom", + "replacement", + "accessibility", + "skins", + "ui", + "checked", + "disabled", + "indeterminate", + "css3", + "html5", + "tiny", + "lightweight", + "jquery", + "zepto" + ], + "homepage": "http://fronteed.com/iCheck/", + "docs": "https://github.com/fronteed/iCheck", + "demo": "http://fronteed.com/iCheck/", + "download": "http://fronteed.com/iCheck/", + "bugs": "https://github.com/fronteed/iCheck/issues/" +} diff --git a/public/assets/vendors/iCheck/icheck.js b/public/assets/vendors/iCheck/icheck.js new file mode 100644 index 0000000..51c3e80 --- /dev/null +++ b/public/assets/vendors/iCheck/icheck.js @@ -0,0 +1,509 @@ +/*! + * iCheck v1.0.2, http://git.io/arlzeA + * =================================== + * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization + * + * (c) 2013 Damir Sultanov, http://fronteed.com + * MIT Licensed + */ + +(function($) { + + // Cached vars + var _iCheck = 'iCheck', + _iCheckHelper = _iCheck + '-helper', + _checkbox = 'checkbox', + _radio = 'radio', + _checked = 'checked', + _unchecked = 'un' + _checked, + _disabled = 'disabled',a + _determinate = 'determinate', + _indeterminate = 'in' + _determinate, + _update = 'update', + _type = 'type', + _click = 'click', + _touch = 'touchbegin.i touchend.i', + _add = 'addClass', + _remove = 'removeClass', + _callback = 'trigger', + _label = 'label', + _cursor = 'cursor', + _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent); + + // Plugin init + $.fn[_iCheck] = function(options, fire) { + + // Walker + var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]', + stack = $(), + walker = function(object) { + object.each(function() { + var self = $(this); + + if (self.is(handle)) { + stack = stack.add(self); + } else { + stack = stack.add(self.find(handle)); + } + }); + }; + + // Check if we should operate with some method + if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) { + + // Normalize method's name + options = options.toLowerCase(); + + // Find checkboxes and radio buttons + walker(this); + + return stack.each(function() { + var self = $(this); + + if (options == 'destroy') { + tidy(self, 'ifDestroyed'); + } else { + operate(self, true, options); + } + + // Fire method's callback + if ($.isFunction(fire)) { + fire(); + } + }); + + // Customization + } else if (typeof options == 'object' || !options) { + + // Check if any options were passed + var settings = $.extend({ + checkedClass: _checked, + disabledClass: _disabled, + indeterminateClass: _indeterminate, + labelHover: true + }, options), + + selector = settings.handle, + hoverClass = settings.hoverClass || 'hover', + focusClass = settings.focusClass || 'focus', + activeClass = settings.activeClass || 'active', + labelHover = !!settings.labelHover, + labelHoverClass = settings.labelHoverClass || 'hover', + + // Setup clickable area + area = ('' + settings.increaseArea).replace('%', '') | 0; + + // Selector limit + if (selector == _checkbox || selector == _radio) { + handle = 'input[type="' + selector + '"]'; + } + + // Clickable area limit + if (area < -50) { + area = -50; + } + + // Walk around the selector + walker(this); + + return stack.each(function() { + var self = $(this); + + // If already customized + tidy(self); + + var node = this, + id = node.id, + + // Layer styles + offset = -area + '%', + size = 100 + (area * 2) + '%', + layer = { + position: 'absolute', + top: offset, + left: offset, + display: 'block', + width: size, + height: size, + margin: 0, + padding: 0, + background: '#fff', + border: 0, + opacity: 0 + }, + + // Choose how to hide input + hide = _mobile ? { + position: 'absolute', + visibility: 'hidden' + } : area ? layer : { + position: 'absolute', + opacity: 0 + }, + + // Get proper class + className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio, + + // Find assigned labels + label = $(_label + '[for="' + id + '"]').add(self.closest(_label)), + + // Check ARIA option + aria = !!settings.aria, + + // Set ARIA placeholder + ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6), + + // Parent & helper + parent = '
')[_callback]('ifCreated').parent().append(settings.insert); + + // Layer addition + helper = $('').css(layer).appendTo(parent); + + // Finalize customization + self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide); + !!settings.inheritClass && parent[_add](node.className || ''); + !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id); + parent.css('position') == 'static' && parent.css('position', 'relative'); + operate(self, true, _update); + + // Label events + if (label.length) { + label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) { + var type = event[_type], + item = $(this); + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + if ($(event.target).is('a')) { + return; + } + operate(self, false, true); + + // Hover state + } else if (labelHover) { + + // mouseout|touchend + if (/ut|nd/.test(type)) { + parent[_remove](hoverClass); + item[_remove](labelHoverClass); + } else { + parent[_add](hoverClass); + item[_add](labelHoverClass); + } + } + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + } + } + }); + } + + // Input events + self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) { + var type = event[_type], + key = event.keyCode; + + // Click + if (type == _click) { + return false; + + // Keydown + } else if (type == 'keydown' && key == 32) { + if (!(node[_type] == _radio && node[_checked])) { + if (node[_checked]) { + off(self, _checked); + } else { + on(self, _checked); + } + } + + return false; + + // Keyup + } else if (type == 'keyup' && node[_type] == _radio) { + !node[_checked] && on(self, _checked); + + // Focus/blur + } else if (/us|ur/.test(type)) { + parent[type == 'blur' ? _remove : _add](focusClass); + } + }); + + // Helper events + helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) { + var type = event[_type], + + // mousedown|mouseup + toggle = /wn|up/.test(type) ? activeClass : hoverClass; + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + operate(self, false, true); + + // Active and hover states + } else { + + // State is on + if (/wn|er|in/.test(type)) { + + // mousedown|mouseover|touchbegin + parent[_add](toggle); + + // State is off + } else { + parent[_remove](toggle + ' ' + activeClass); + } + + // Label hover + if (label.length && labelHover && toggle == hoverClass) { + + // mouseout|touchend + label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass); + } + } + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + } + } + }); + }); + } else { + return this; + } + }; + + // Do something with inputs + function operate(input, direct, method) { + var node = input[0], + state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked, + active = method == _update ? { + checked: node[_checked], + disabled: node[_disabled], + indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false' + } : node[state]; + + // Check, disable or indeterminate + if (/^(ch|di|in)/.test(method) && !active) { + on(input, state); + + // Uncheck, enable or determinate + } else if (/^(un|en|de)/.test(method) && active) { + off(input, state); + + // Update + } else if (method == _update) { + + // Handle states + for (var each in active) { + if (active[each]) { + on(input, each, true); + } else { + off(input, each, true); + } + } + + } else if (!direct || method == 'toggle') { + + // Helper or label was clicked + if (!direct) { + input[_callback]('ifClicked'); + } + + // Toggle checked state + if (active) { + if (node[_type] !== _radio) { + off(input, state); + } + } else { + on(input, state); + } + } + } + + // Add checked, disabled or indeterminate state + function on(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== true) { + + // Toggle assigned radio buttons + if (!keep && state == _checked && node[_type] == _radio && node.name) { + var form = input.closest('form'), + inputs = 'input[name="' + node.name + '"]'; + + inputs = form.length ? form.find(inputs) : $(inputs); + + inputs.each(function() { + if (this !== node && $(this).data(_iCheck)) { + off($(this), state); + } + }); + } + + // Indeterminate state + if (indeterminate) { + + // Add indeterminate state + node[state] = true; + + // Remove checked state + if (node[_checked]) { + off(input, _checked, 'force'); + } + + // Checked or disabled state + } else { + + // Add checked or disabled state + if (!keep) { + node[state] = true; + } + + // Remove indeterminate state + if (checked && node[_indeterminate]) { + off(input, _indeterminate, false); + } + } + + // Trigger callbacks + callbacks(input, checked, state, keep); + } + + // Add proper cursor + if (node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'default'); + } + + // Add state class + parent[_add](specific || option(input, state) || ''); + + // Set ARIA attribute + if (!!parent.attr('role') && !indeterminate) { + parent.attr('aria-' + (disabled ? _disabled : _checked), 'true'); + } + + // Remove regular state class + parent[_remove](regular || option(input, callback) || ''); + } + + // Remove checked, disabled or indeterminate state + function off(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== false) { + + // Toggle state + if (indeterminate || !keep || keep == 'force') { + node[state] = false; + } + + // Trigger callbacks + callbacks(input, checked, callback, keep); + } + + // Add proper cursor + if (!node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'pointer'); + } + + // Remove state class + parent[_remove](specific || option(input, state) || ''); + + // Set ARIA attribute + if (!!parent.attr('role') && !indeterminate) { + parent.attr('aria-' + (disabled ? _disabled : _checked), 'false'); + } + + // Add regular state class + parent[_add](regular || option(input, callback) || ''); + } + + // Remove all traces + function tidy(input, callback) { + if (input.data(_iCheck)) { + + // Remove everything except input + input.parent().html(input.attr('style', input.data(_iCheck).s || '')); + + // Callback + if (callback) { + input[_callback](callback); + } + + // Unbind events + input.off('.i').unwrap(); + $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i'); + } + } + + // Get some option + function option(input, state, regular) { + if (input.data(_iCheck)) { + return input.data(_iCheck).o[state + (regular ? '' : 'Class')]; + } + } + + // Capitalize some string + function capitalize(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + + // Executable handlers + function callbacks(input, checked, callback, keep) { + if (!keep) { + if (checked) { + input[_callback]('ifToggled'); + } + + input[_callback]('ifChanged')[_callback]('if' + capitalize(callback)); + } + } +})(window.jQuery || window.Zepto); diff --git a/public/assets/vendors/iCheck/icheck.min.js b/public/assets/vendors/iCheck/icheck.min.js new file mode 100644 index 0000000..7cdb17e --- /dev/null +++ b/public/assets/vendors/iCheck/icheck.min.js @@ -0,0 +1,11 @@ +/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ +(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate, +v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true"); +g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap(); +f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i"; +_add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c= +f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this, +b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='
")[_callback]("ifCreated").parent().append(e.insert);d=f('').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return; +A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d= +b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/public/assets/vendors/iCheck/skins/all.css b/public/assets/vendors/iCheck/skins/all.css new file mode 100644 index 0000000..6439b74 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/all.css @@ -0,0 +1,61 @@ +/* iCheck plugin skins +----------------------------------- */ +@import url("minimal/_all.css"); +/* +@import url("minimal/minimal.css"); +@import url("minimal/red.css"); +@import url("minimal/green.css"); +@import url("minimal/blue.css"); +@import url("minimal/aero.css"); +@import url("minimal/grey.css"); +@import url("minimal/orange.css"); +@import url("minimal/yellow.css"); +@import url("minimal/pink.css"); +@import url("minimal/purple.css"); +*/ + +@import url("square/_all.css"); +/* +@import url("square/square.css"); +@import url("square/red.css"); +@import url("square/green.css"); +@import url("square/blue.css"); +@import url("square/aero.css"); +@import url("square/grey.css"); +@import url("square/orange.css"); +@import url("square/yellow.css"); +@import url("square/pink.css"); +@import url("square/purple.css"); +*/ + +@import url("flat/_all.css"); +/* +@import url("flat/flat.css"); +@import url("flat/red.css"); +@import url("flat/green.css"); +@import url("flat/blue.css"); +@import url("flat/aero.css"); +@import url("flat/grey.css"); +@import url("flat/orange.css"); +@import url("flat/yellow.css"); +@import url("flat/pink.css"); +@import url("flat/purple.css"); +*/ + +@import url("line/_all.css"); +/* +@import url("line/line.css"); +@import url("line/red.css"); +@import url("line/green.css"); +@import url("line/blue.css"); +@import url("line/aero.css"); +@import url("line/grey.css"); +@import url("line/orange.css"); +@import url("line/yellow.css"); +@import url("line/pink.css"); +@import url("line/purple.css"); +*/ + +@import url("polaris/polaris.css"); + +@import url("futurico/futurico.css"); \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/_all.css b/public/assets/vendors/iCheck/skins/flat/_all.css new file mode 100644 index 0000000..e9d0ceb --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/_all.css @@ -0,0 +1,530 @@ +/* iCheck plugin Flat skin +----------------------------------- */ +.icheckbox_flat, +.iradio_flat { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(flat.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat { + background-position: 0 0; +} + .icheckbox_flat.checked { + background-position: -22px 0; + } + .icheckbox_flat.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat { + background-position: -88px 0; +} + .iradio_flat.checked { + background-position: -110px 0; + } + .iradio_flat.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat, + .iradio_flat { + background-image: url(flat@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* red */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* green */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* blue */ +.icheckbox_flat-blue, +.iradio_flat-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-blue { + background-position: 0 0; +} + .icheckbox_flat-blue.checked { + background-position: -22px 0; + } + .icheckbox_flat-blue.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-blue.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-blue { + background-position: -88px 0; +} + .iradio_flat-blue.checked { + background-position: -110px 0; + } + .iradio_flat-blue.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-blue.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-blue, + .iradio_flat-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* aero */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* grey */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* orange */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* yellow */ +.icheckbox_flat-yellow, +.iradio_flat-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-yellow { + background-position: 0 0; +} + .icheckbox_flat-yellow.checked { + background-position: -22px 0; + } + .icheckbox_flat-yellow.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-yellow.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-yellow { + background-position: -88px 0; +} + .iradio_flat-yellow.checked { + background-position: -110px 0; + } + .iradio_flat-yellow.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-yellow.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-yellow, + .iradio_flat-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* pink */ +.icheckbox_flat-pink, +.iradio_flat-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-pink { + background-position: 0 0; +} + .icheckbox_flat-pink.checked { + background-position: -22px 0; + } + .icheckbox_flat-pink.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-pink.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-pink { + background-position: -88px 0; +} + .iradio_flat-pink.checked { + background-position: -110px 0; + } + .iradio_flat-pink.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-pink.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-pink, + .iradio_flat-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* purple */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/aero.css b/public/assets/vendors/iCheck/skins/flat/aero.css new file mode 100644 index 0000000..71cbca9 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/aero.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, aero +----------------------------------- */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/aero.png b/public/assets/vendors/iCheck/skins/flat/aero.png new file mode 100644 index 0000000..f4277aa Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/aero.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/aero@2x.png b/public/assets/vendors/iCheck/skins/flat/aero@2x.png new file mode 100644 index 0000000..a9a7494 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/aero@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/blue.css b/public/assets/vendors/iCheck/skins/flat/blue.css new file mode 100644 index 0000000..56a7830 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/blue.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, blue +----------------------------------- */ +.icheckbox_flat-blue, +.iradio_flat-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-blue { + background-position: 0 0; +} + .icheckbox_flat-blue.checked { + background-position: -22px 0; + } + .icheckbox_flat-blue.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-blue.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-blue { + background-position: -88px 0; +} + .iradio_flat-blue.checked { + background-position: -110px 0; + } + .iradio_flat-blue.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-blue.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-blue, + .iradio_flat-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/blue.png b/public/assets/vendors/iCheck/skins/flat/blue.png new file mode 100644 index 0000000..4b6ef98 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/blue.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/blue@2x.png b/public/assets/vendors/iCheck/skins/flat/blue@2x.png new file mode 100644 index 0000000..d52da05 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/blue@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/flat.css b/public/assets/vendors/iCheck/skins/flat/flat.css new file mode 100644 index 0000000..0f39690 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/flat.css @@ -0,0 +1,53 @@ +/* iCheck plugin flat skin, black +----------------------------------- */ +.icheckbox_flat, +.iradio_flat { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(flat.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat { + background-position: 0 0; +} + .icheckbox_flat.checked { + background-position: -22px 0; + } + .icheckbox_flat.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat { + background-position: -88px 0; +} + .iradio_flat.checked { + background-position: -110px 0; + } + .iradio_flat.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat, + .iradio_flat { + background-image: url(flat@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/flat.png b/public/assets/vendors/iCheck/skins/flat/flat.png new file mode 100644 index 0000000..15af826 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/flat.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/flat@2x.png b/public/assets/vendors/iCheck/skins/flat/flat@2x.png new file mode 100644 index 0000000..e70e438 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/flat@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/green.css b/public/assets/vendors/iCheck/skins/flat/green.css new file mode 100644 index 0000000..b80e04d --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/green.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, green +----------------------------------- */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/green.png b/public/assets/vendors/iCheck/skins/flat/green.png new file mode 100644 index 0000000..6b303fb Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/green.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/green@2x.png b/public/assets/vendors/iCheck/skins/flat/green@2x.png new file mode 100644 index 0000000..92b4411 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/green@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/grey.css b/public/assets/vendors/iCheck/skins/flat/grey.css new file mode 100644 index 0000000..96e62e8 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/grey.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, grey +----------------------------------- */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/grey.png b/public/assets/vendors/iCheck/skins/flat/grey.png new file mode 100644 index 0000000..c6e2873 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/grey.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/grey@2x.png b/public/assets/vendors/iCheck/skins/flat/grey@2x.png new file mode 100644 index 0000000..0b47b1c Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/grey@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/orange.css b/public/assets/vendors/iCheck/skins/flat/orange.css new file mode 100644 index 0000000..f9c873f --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/orange.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, orange +----------------------------------- */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/orange.png b/public/assets/vendors/iCheck/skins/flat/orange.png new file mode 100644 index 0000000..ec2532e Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/orange.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/orange@2x.png b/public/assets/vendors/iCheck/skins/flat/orange@2x.png new file mode 100644 index 0000000..9350b50 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/orange@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/pink.css b/public/assets/vendors/iCheck/skins/flat/pink.css new file mode 100644 index 0000000..179f980 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/pink.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, pink +----------------------------------- */ +.icheckbox_flat-pink, +.iradio_flat-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-pink { + background-position: 0 0; +} + .icheckbox_flat-pink.checked { + background-position: -22px 0; + } + .icheckbox_flat-pink.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-pink.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-pink { + background-position: -88px 0; +} + .iradio_flat-pink.checked { + background-position: -110px 0; + } + .iradio_flat-pink.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-pink.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-pink, + .iradio_flat-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/pink.png b/public/assets/vendors/iCheck/skins/flat/pink.png new file mode 100644 index 0000000..3e65d9d Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/pink.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/pink@2x.png b/public/assets/vendors/iCheck/skins/flat/pink@2x.png new file mode 100644 index 0000000..281ba06 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/pink@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/purple.css b/public/assets/vendors/iCheck/skins/flat/purple.css new file mode 100644 index 0000000..dfedafc --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/purple.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, purple +----------------------------------- */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/purple.png b/public/assets/vendors/iCheck/skins/flat/purple.png new file mode 100644 index 0000000..3699fd5 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/purple.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/purple@2x.png b/public/assets/vendors/iCheck/skins/flat/purple@2x.png new file mode 100644 index 0000000..7f4be74 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/purple@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/red.css b/public/assets/vendors/iCheck/skins/flat/red.css new file mode 100644 index 0000000..83ec91e --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/red.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, red +----------------------------------- */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/red.png b/public/assets/vendors/iCheck/skins/flat/red.png new file mode 100644 index 0000000..0d5ac38 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/red.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/red@2x.png b/public/assets/vendors/iCheck/skins/flat/red@2x.png new file mode 100644 index 0000000..38590d9 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/red@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/yellow.css b/public/assets/vendors/iCheck/skins/flat/yellow.css new file mode 100644 index 0000000..7bb6039 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/flat/yellow.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, yellow +----------------------------------- */ +.icheckbox_flat-yellow, +.iradio_flat-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-yellow { + background-position: 0 0; +} + .icheckbox_flat-yellow.checked { + background-position: -22px 0; + } + .icheckbox_flat-yellow.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-yellow.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-yellow { + background-position: -88px 0; +} + .iradio_flat-yellow.checked { + background-position: -110px 0; + } + .iradio_flat-yellow.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-yellow.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-yellow, + .iradio_flat-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/flat/yellow.png b/public/assets/vendors/iCheck/skins/flat/yellow.png new file mode 100644 index 0000000..909dadc Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/yellow.png differ diff --git a/public/assets/vendors/iCheck/skins/flat/yellow@2x.png b/public/assets/vendors/iCheck/skins/flat/yellow@2x.png new file mode 100644 index 0000000..9fd5d73 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/flat/yellow@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/futurico/futurico.css b/public/assets/vendors/iCheck/skins/futurico/futurico.css new file mode 100644 index 0000000..a34a754 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/futurico/futurico.css @@ -0,0 +1,53 @@ +/* iCheck plugin Futurico skin +----------------------------------- */ +.icheckbox_futurico, +.iradio_futurico { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 16px; + height: 17px; + background: url(futurico.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_futurico { + background-position: 0 0; +} + .icheckbox_futurico.checked { + background-position: -18px 0; + } + .icheckbox_futurico.disabled { + background-position: -36px 0; + cursor: default; + } + .icheckbox_futurico.checked.disabled { + background-position: -54px 0; + } + +.iradio_futurico { + background-position: -72px 0; +} + .iradio_futurico.checked { + background-position: -90px 0; + } + .iradio_futurico.disabled { + background-position: -108px 0; + cursor: default; + } + .iradio_futurico.checked.disabled { + background-position: -126px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_futurico, + .iradio_futurico { + background-image: url(futurico@2x.png); + -webkit-background-size: 144px 19px; + background-size: 144px 19px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/futurico/futurico.png b/public/assets/vendors/iCheck/skins/futurico/futurico.png new file mode 100644 index 0000000..50d62b5 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/futurico/futurico.png differ diff --git a/public/assets/vendors/iCheck/skins/futurico/futurico@2x.png b/public/assets/vendors/iCheck/skins/futurico/futurico@2x.png new file mode 100644 index 0000000..f7eb45a Binary files /dev/null and b/public/assets/vendors/iCheck/skins/futurico/futurico@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/line/_all.css b/public/assets/vendors/iCheck/skins/line/_all.css new file mode 100644 index 0000000..8a20ed2 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/_all.css @@ -0,0 +1,710 @@ +/* iCheck plugin Line skin +----------------------------------- */ +.icheckbox_line, +.iradio_line { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #000; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line.hover, + .icheckbox_line.checked.hover, + .iradio_line.hover { + background: #444; + } + .icheckbox_line.checked, + .iradio_line.checked { + background: #000; + } + .icheckbox_line.checked .icheck_line-icon, + .iradio_line.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line.disabled, + .iradio_line.disabled { + background: #ccc; + cursor: default; + } + .icheckbox_line.disabled .icheck_line-icon, + .iradio_line.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line.checked.disabled, + .iradio_line.checked.disabled { + background: #ccc; + } + .icheckbox_line.checked.disabled .icheck_line-icon, + .iradio_line.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* red */ +.icheckbox_line-red, +.iradio_line-red { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #e56c69; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-red.hover, + .icheckbox_line-red.checked.hover, + .iradio_line-red.hover { + background: #E98582; + } + .icheckbox_line-red.checked, + .iradio_line-red.checked { + background: #e56c69; + } + .icheckbox_line-red.checked .icheck_line-icon, + .iradio_line-red.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-red.disabled, + .iradio_line-red.disabled { + background: #F7D3D2; + cursor: default; + } + .icheckbox_line-red.disabled .icheck_line-icon, + .iradio_line-red.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-red.checked.disabled, + .iradio_line-red.checked.disabled { + background: #F7D3D2; + } + .icheckbox_line-red.checked.disabled .icheck_line-icon, + .iradio_line-red.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* green */ +.icheckbox_line-green, +.iradio_line-green { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #1b7e5a; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-green.hover, + .icheckbox_line-green.checked.hover, + .iradio_line-green.hover { + background: #24AA7A; + } + .icheckbox_line-green.checked, + .iradio_line-green.checked { + background: #1b7e5a; + } + .icheckbox_line-green.checked .icheck_line-icon, + .iradio_line-green.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-green.disabled, + .iradio_line-green.disabled { + background: #89E6C4; + cursor: default; + } + .icheckbox_line-green.disabled .icheck_line-icon, + .iradio_line-green.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-green.checked.disabled, + .iradio_line-green.checked.disabled { + background: #89E6C4; + } + .icheckbox_line-green.checked.disabled .icheck_line-icon, + .iradio_line-green.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* blue */ +.icheckbox_line-blue, +.iradio_line-blue { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #2489c5; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-blue.hover, + .icheckbox_line-blue.checked.hover, + .iradio_line-blue.hover { + background: #3DA0DB; + } + .icheckbox_line-blue.checked, + .iradio_line-blue.checked { + background: #2489c5; + } + .icheckbox_line-blue.checked .icheck_line-icon, + .iradio_line-blue.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-blue.disabled, + .iradio_line-blue.disabled { + background: #ADD7F0; + cursor: default; + } + .icheckbox_line-blue.disabled .icheck_line-icon, + .iradio_line-blue.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-blue.checked.disabled, + .iradio_line-blue.checked.disabled { + background: #ADD7F0; + } + .icheckbox_line-blue.checked.disabled .icheck_line-icon, + .iradio_line-blue.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* aero */ +.icheckbox_line-aero, +.iradio_line-aero { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #9cc2cb; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-aero.hover, + .icheckbox_line-aero.checked.hover, + .iradio_line-aero.hover { + background: #B5D1D8; + } + .icheckbox_line-aero.checked, + .iradio_line-aero.checked { + background: #9cc2cb; + } + .icheckbox_line-aero.checked .icheck_line-icon, + .iradio_line-aero.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-aero.disabled, + .iradio_line-aero.disabled { + background: #D2E4E8; + cursor: default; + } + .icheckbox_line-aero.disabled .icheck_line-icon, + .iradio_line-aero.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-aero.checked.disabled, + .iradio_line-aero.checked.disabled { + background: #D2E4E8; + } + .icheckbox_line-aero.checked.disabled .icheck_line-icon, + .iradio_line-aero.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* grey */ +.icheckbox_line-grey, +.iradio_line-grey { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #73716e; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-grey.hover, + .icheckbox_line-grey.checked.hover, + .iradio_line-grey.hover { + background: #8B8986; + } + .icheckbox_line-grey.checked, + .iradio_line-grey.checked { + background: #73716e; + } + .icheckbox_line-grey.checked .icheck_line-icon, + .iradio_line-grey.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-grey.disabled, + .iradio_line-grey.disabled { + background: #D5D4D3; + cursor: default; + } + .icheckbox_line-grey.disabled .icheck_line-icon, + .iradio_line-grey.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-grey.checked.disabled, + .iradio_line-grey.checked.disabled { + background: #D5D4D3; + } + .icheckbox_line-grey.checked.disabled .icheck_line-icon, + .iradio_line-grey.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* orange */ +.icheckbox_line-orange, +.iradio_line-orange { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #f70; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-orange.hover, + .icheckbox_line-orange.checked.hover, + .iradio_line-orange.hover { + background: #FF9233; + } + .icheckbox_line-orange.checked, + .iradio_line-orange.checked { + background: #f70; + } + .icheckbox_line-orange.checked .icheck_line-icon, + .iradio_line-orange.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-orange.disabled, + .iradio_line-orange.disabled { + background: #FFD6B3; + cursor: default; + } + .icheckbox_line-orange.disabled .icheck_line-icon, + .iradio_line-orange.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-orange.checked.disabled, + .iradio_line-orange.checked.disabled { + background: #FFD6B3; + } + .icheckbox_line-orange.checked.disabled .icheck_line-icon, + .iradio_line-orange.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* yellow */ +.icheckbox_line-yellow, +.iradio_line-yellow { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #FFC414; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-yellow.hover, + .icheckbox_line-yellow.checked.hover, + .iradio_line-yellow.hover { + background: #FFD34F; + } + .icheckbox_line-yellow.checked, + .iradio_line-yellow.checked { + background: #FFC414; + } + .icheckbox_line-yellow.checked .icheck_line-icon, + .iradio_line-yellow.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-yellow.disabled, + .iradio_line-yellow.disabled { + background: #FFE495; + cursor: default; + } + .icheckbox_line-yellow.disabled .icheck_line-icon, + .iradio_line-yellow.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-yellow.checked.disabled, + .iradio_line-yellow.checked.disabled { + background: #FFE495; + } + .icheckbox_line-yellow.checked.disabled .icheck_line-icon, + .iradio_line-yellow.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* pink */ +.icheckbox_line-pink, +.iradio_line-pink { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #a77a94; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-pink.hover, + .icheckbox_line-pink.checked.hover, + .iradio_line-pink.hover { + background: #B995A9; + } + .icheckbox_line-pink.checked, + .iradio_line-pink.checked { + background: #a77a94; + } + .icheckbox_line-pink.checked .icheck_line-icon, + .iradio_line-pink.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-pink.disabled, + .iradio_line-pink.disabled { + background: #E0D0DA; + cursor: default; + } + .icheckbox_line-pink.disabled .icheck_line-icon, + .iradio_line-pink.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-pink.checked.disabled, + .iradio_line-pink.checked.disabled { + background: #E0D0DA; + } + .icheckbox_line-pink.checked.disabled .icheck_line-icon, + .iradio_line-pink.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* purple */ +.icheckbox_line-purple, +.iradio_line-purple { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #6a5a8c; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-purple.hover, + .icheckbox_line-purple.checked.hover, + .iradio_line-purple.hover { + background: #8677A7; + } + .icheckbox_line-purple.checked, + .iradio_line-purple.checked { + background: #6a5a8c; + } + .icheckbox_line-purple.checked .icheck_line-icon, + .iradio_line-purple.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-purple.disabled, + .iradio_line-purple.disabled { + background: #D2CCDE; + cursor: default; + } + .icheckbox_line-purple.disabled .icheck_line-icon, + .iradio_line-purple.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-purple.checked.disabled, + .iradio_line-purple.checked.disabled { + background: #D2CCDE; + } + .icheckbox_line-purple.checked.disabled .icheck_line-icon, + .iradio_line-purple.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/aero.css b/public/assets/vendors/iCheck/skins/line/aero.css new file mode 100644 index 0000000..8227223 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/aero.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, aero +----------------------------------- */ +.icheckbox_line-aero, +.iradio_line-aero { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #9cc2cb; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-aero.hover, + .icheckbox_line-aero.checked.hover, + .iradio_line-aero.hover { + background: #B5D1D8; + } + .icheckbox_line-aero.checked, + .iradio_line-aero.checked { + background: #9cc2cb; + } + .icheckbox_line-aero.checked .icheck_line-icon, + .iradio_line-aero.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-aero.disabled, + .iradio_line-aero.disabled { + background: #D2E4E8; + cursor: default; + } + .icheckbox_line-aero.disabled .icheck_line-icon, + .iradio_line-aero.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-aero.checked.disabled, + .iradio_line-aero.checked.disabled { + background: #D2E4E8; + } + .icheckbox_line-aero.checked.disabled .icheck_line-icon, + .iradio_line-aero.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/blue.css b/public/assets/vendors/iCheck/skins/line/blue.css new file mode 100644 index 0000000..b3f9819 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/blue.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, blue +----------------------------------- */ +.icheckbox_line-blue, +.iradio_line-blue { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #2489c5; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-blue.hover, + .icheckbox_line-blue.checked.hover, + .iradio_line-blue.hover { + background: #3DA0DB; + } + .icheckbox_line-blue.checked, + .iradio_line-blue.checked { + background: #2489c5; + } + .icheckbox_line-blue.checked .icheck_line-icon, + .iradio_line-blue.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-blue.disabled, + .iradio_line-blue.disabled { + background: #ADD7F0; + cursor: default; + } + .icheckbox_line-blue.disabled .icheck_line-icon, + .iradio_line-blue.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-blue.checked.disabled, + .iradio_line-blue.checked.disabled { + background: #ADD7F0; + } + .icheckbox_line-blue.checked.disabled .icheck_line-icon, + .iradio_line-blue.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/green.css b/public/assets/vendors/iCheck/skins/line/green.css new file mode 100644 index 0000000..82b4263 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/green.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, green +----------------------------------- */ +.icheckbox_line-green, +.iradio_line-green { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #1b7e5a; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-green.hover, + .icheckbox_line-green.checked.hover, + .iradio_line-green.hover { + background: #24AA7A; + } + .icheckbox_line-green.checked, + .iradio_line-green.checked { + background: #1b7e5a; + } + .icheckbox_line-green.checked .icheck_line-icon, + .iradio_line-green.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-green.disabled, + .iradio_line-green.disabled { + background: #89E6C4; + cursor: default; + } + .icheckbox_line-green.disabled .icheck_line-icon, + .iradio_line-green.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-green.checked.disabled, + .iradio_line-green.checked.disabled { + background: #89E6C4; + } + .icheckbox_line-green.checked.disabled .icheck_line-icon, + .iradio_line-green.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/grey.css b/public/assets/vendors/iCheck/skins/line/grey.css new file mode 100644 index 0000000..96a5d26 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/grey.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, grey +----------------------------------- */ +.icheckbox_line-grey, +.iradio_line-grey { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #73716e; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-grey.hover, + .icheckbox_line-grey.checked.hover, + .iradio_line-grey.hover { + background: #8B8986; + } + .icheckbox_line-grey.checked, + .iradio_line-grey.checked { + background: #73716e; + } + .icheckbox_line-grey.checked .icheck_line-icon, + .iradio_line-grey.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-grey.disabled, + .iradio_line-grey.disabled { + background: #D5D4D3; + cursor: default; + } + .icheckbox_line-grey.disabled .icheck_line-icon, + .iradio_line-grey.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-grey.checked.disabled, + .iradio_line-grey.checked.disabled { + background: #D5D4D3; + } + .icheckbox_line-grey.checked.disabled .icheck_line-icon, + .iradio_line-grey.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/line.css b/public/assets/vendors/iCheck/skins/line/line.css new file mode 100644 index 0000000..a24398a --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/line.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, black +----------------------------------- */ +.icheckbox_line, +.iradio_line { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #000; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line.hover, + .icheckbox_line.checked.hover, + .iradio_line.hover { + background: #444; + } + .icheckbox_line.checked, + .iradio_line.checked { + background: #000; + } + .icheckbox_line.checked .icheck_line-icon, + .iradio_line.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line.disabled, + .iradio_line.disabled { + background: #ccc; + cursor: default; + } + .icheckbox_line.disabled .icheck_line-icon, + .iradio_line.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line.checked.disabled, + .iradio_line.checked.disabled { + background: #ccc; + } + .icheckbox_line.checked.disabled .icheck_line-icon, + .iradio_line.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/line.png b/public/assets/vendors/iCheck/skins/line/line.png new file mode 100644 index 0000000..d21d7a7 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/line/line.png differ diff --git a/public/assets/vendors/iCheck/skins/line/line@2x.png b/public/assets/vendors/iCheck/skins/line/line@2x.png new file mode 100644 index 0000000..62900a2 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/line/line@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/line/orange.css b/public/assets/vendors/iCheck/skins/line/orange.css new file mode 100644 index 0000000..5f051b4 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/orange.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, orange +----------------------------------- */ +.icheckbox_line-orange, +.iradio_line-orange { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #f70; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-orange.hover, + .icheckbox_line-orange.checked.hover, + .iradio_line-orange.hover { + background: #FF9233; + } + .icheckbox_line-orange.checked, + .iradio_line-orange.checked { + background: #f70; + } + .icheckbox_line-orange.checked .icheck_line-icon, + .iradio_line-orange.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-orange.disabled, + .iradio_line-orange.disabled { + background: #FFD6B3; + cursor: default; + } + .icheckbox_line-orange.disabled .icheck_line-icon, + .iradio_line-orange.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-orange.checked.disabled, + .iradio_line-orange.checked.disabled { + background: #FFD6B3; + } + .icheckbox_line-orange.checked.disabled .icheck_line-icon, + .iradio_line-orange.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/pink.css b/public/assets/vendors/iCheck/skins/line/pink.css new file mode 100644 index 0000000..b98bbc3 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/pink.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, pink +----------------------------------- */ +.icheckbox_line-pink, +.iradio_line-pink { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #a77a94; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-pink.hover, + .icheckbox_line-pink.checked.hover, + .iradio_line-pink.hover { + background: #B995A9; + } + .icheckbox_line-pink.checked, + .iradio_line-pink.checked { + background: #a77a94; + } + .icheckbox_line-pink.checked .icheck_line-icon, + .iradio_line-pink.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-pink.disabled, + .iradio_line-pink.disabled { + background: #E0D0DA; + cursor: default; + } + .icheckbox_line-pink.disabled .icheck_line-icon, + .iradio_line-pink.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-pink.checked.disabled, + .iradio_line-pink.checked.disabled { + background: #E0D0DA; + } + .icheckbox_line-pink.checked.disabled .icheck_line-icon, + .iradio_line-pink.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/purple.css b/public/assets/vendors/iCheck/skins/line/purple.css new file mode 100644 index 0000000..61f4a2f --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/purple.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, purple +----------------------------------- */ +.icheckbox_line-purple, +.iradio_line-purple { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #6a5a8c; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-purple.hover, + .icheckbox_line-purple.checked.hover, + .iradio_line-purple.hover { + background: #8677A7; + } + .icheckbox_line-purple.checked, + .iradio_line-purple.checked { + background: #6a5a8c; + } + .icheckbox_line-purple.checked .icheck_line-icon, + .iradio_line-purple.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-purple.disabled, + .iradio_line-purple.disabled { + background: #D2CCDE; + cursor: default; + } + .icheckbox_line-purple.disabled .icheck_line-icon, + .iradio_line-purple.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-purple.checked.disabled, + .iradio_line-purple.checked.disabled { + background: #D2CCDE; + } + .icheckbox_line-purple.checked.disabled .icheck_line-icon, + .iradio_line-purple.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/red.css b/public/assets/vendors/iCheck/skins/line/red.css new file mode 100644 index 0000000..d86c946 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/red.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, red +----------------------------------- */ +.icheckbox_line-red, +.iradio_line-red { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #e56c69; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-red.hover, + .icheckbox_line-red.checked.hover, + .iradio_line-red.hover { + background: #E98582; + } + .icheckbox_line-red.checked, + .iradio_line-red.checked { + background: #e56c69; + } + .icheckbox_line-red.checked .icheck_line-icon, + .iradio_line-red.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-red.disabled, + .iradio_line-red.disabled { + background: #F7D3D2; + cursor: default; + } + .icheckbox_line-red.disabled .icheck_line-icon, + .iradio_line-red.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-red.checked.disabled, + .iradio_line-red.checked.disabled { + background: #F7D3D2; + } + .icheckbox_line-red.checked.disabled .icheck_line-icon, + .iradio_line-red.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/line/yellow.css b/public/assets/vendors/iCheck/skins/line/yellow.css new file mode 100644 index 0000000..b34148a --- /dev/null +++ b/public/assets/vendors/iCheck/skins/line/yellow.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, yellow +----------------------------------- */ +.icheckbox_line-yellow, +.iradio_line-yellow { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #FFC414; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-yellow.hover, + .icheckbox_line-yellow.checked.hover, + .iradio_line-yellow.hover { + background: #FFD34F; + } + .icheckbox_line-yellow.checked, + .iradio_line-yellow.checked { + background: #FFC414; + } + .icheckbox_line-yellow.checked .icheck_line-icon, + .iradio_line-yellow.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-yellow.disabled, + .iradio_line-yellow.disabled { + background: #FFE495; + cursor: default; + } + .icheckbox_line-yellow.disabled .icheck_line-icon, + .iradio_line-yellow.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-yellow.checked.disabled, + .iradio_line-yellow.checked.disabled { + background: #FFE495; + } + .icheckbox_line-yellow.checked.disabled .icheck_line-icon, + .iradio_line-yellow.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/_all.css b/public/assets/vendors/iCheck/skins/minimal/_all.css new file mode 100644 index 0000000..8cf8aca --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/_all.css @@ -0,0 +1,590 @@ +/* iCheck plugin Minimal skin +----------------------------------- */ +.icheckbox_minimal, +.iradio_minimal { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(minimal.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal { + background-position: 0 0; +} + .icheckbox_minimal.hover { + background-position: -20px 0; + } + .icheckbox_minimal.checked { + background-position: -40px 0; + } + .icheckbox_minimal.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal { + background-position: -100px 0; +} + .iradio_minimal.hover { + background-position: -120px 0; + } + .iradio_minimal.checked { + background-position: -140px 0; + } + .iradio_minimal.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal, + .iradio_minimal { + background-image: url(minimal@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* red */ +.icheckbox_minimal-red, +.iradio_minimal-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-red { + background-position: 0 0; +} + .icheckbox_minimal-red.hover { + background-position: -20px 0; + } + .icheckbox_minimal-red.checked { + background-position: -40px 0; + } + .icheckbox_minimal-red.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-red.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-red { + background-position: -100px 0; +} + .iradio_minimal-red.hover { + background-position: -120px 0; + } + .iradio_minimal-red.checked { + background-position: -140px 0; + } + .iradio_minimal-red.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-red.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-red, + .iradio_minimal-red { + background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* green */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* blue */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* aero */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* grey */ +.icheckbox_minimal-grey, +.iradio_minimal-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-grey { + background-position: 0 0; +} + .icheckbox_minimal-grey.hover { + background-position: -20px 0; + } + .icheckbox_minimal-grey.checked { + background-position: -40px 0; + } + .icheckbox_minimal-grey.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-grey.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-grey { + background-position: -100px 0; +} + .iradio_minimal-grey.hover { + background-position: -120px 0; + } + .iradio_minimal-grey.checked { + background-position: -140px 0; + } + .iradio_minimal-grey.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-grey.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-grey, + .iradio_minimal-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* orange */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* yellow */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* pink */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* purple */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/aero.css b/public/assets/vendors/iCheck/skins/minimal/aero.css new file mode 100644 index 0000000..0a7a945 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/aero.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, aero +----------------------------------- */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/aero.png b/public/assets/vendors/iCheck/skins/minimal/aero.png new file mode 100644 index 0000000..dccf774 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/aero.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/aero@2x.png b/public/assets/vendors/iCheck/skins/minimal/aero@2x.png new file mode 100644 index 0000000..5537ee3 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/aero@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/blue.css b/public/assets/vendors/iCheck/skins/minimal/blue.css new file mode 100644 index 0000000..c290097 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/blue.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, blue +----------------------------------- */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/blue.png b/public/assets/vendors/iCheck/skins/minimal/blue.png new file mode 100644 index 0000000..af04cee Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/blue.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/blue@2x.png b/public/assets/vendors/iCheck/skins/minimal/blue@2x.png new file mode 100644 index 0000000..f19210a Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/blue@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/green.css b/public/assets/vendors/iCheck/skins/minimal/green.css new file mode 100644 index 0000000..aa685f3 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/green.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, green +----------------------------------- */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/green.png b/public/assets/vendors/iCheck/skins/minimal/green.png new file mode 100644 index 0000000..9171ebc Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/green.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/green@2x.png b/public/assets/vendors/iCheck/skins/minimal/green@2x.png new file mode 100644 index 0000000..7f18f96 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/green@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/grey.css b/public/assets/vendors/iCheck/skins/minimal/grey.css new file mode 100644 index 0000000..f242697 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/grey.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, grey +----------------------------------- */ +.icheckbox_minimal-grey, +.iradio_minimal-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-grey { + background-position: 0 0; +} + .icheckbox_minimal-grey.hover { + background-position: -20px 0; + } + .icheckbox_minimal-grey.checked { + background-position: -40px 0; + } + .icheckbox_minimal-grey.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-grey.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-grey { + background-position: -100px 0; +} + .iradio_minimal-grey.hover { + background-position: -120px 0; + } + .iradio_minimal-grey.checked { + background-position: -140px 0; + } + .iradio_minimal-grey.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-grey.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-grey, + .iradio_minimal-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/grey.png b/public/assets/vendors/iCheck/skins/minimal/grey.png new file mode 100644 index 0000000..22dcdbc Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/grey.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/grey@2x.png b/public/assets/vendors/iCheck/skins/minimal/grey@2x.png new file mode 100644 index 0000000..85e82dd Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/grey@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/minimal.css b/public/assets/vendors/iCheck/skins/minimal/minimal.css new file mode 100644 index 0000000..c2c6620 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/minimal.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, black +----------------------------------- */ +.icheckbox_minimal, +.iradio_minimal { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(minimal.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal { + background-position: 0 0; +} + .icheckbox_minimal.hover { + background-position: -20px 0; + } + .icheckbox_minimal.checked { + background-position: -40px 0; + } + .icheckbox_minimal.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal { + background-position: -100px 0; +} + .iradio_minimal.hover { + background-position: -120px 0; + } + .iradio_minimal.checked { + background-position: -140px 0; + } + .iradio_minimal.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal, + .iradio_minimal { + background-image: url(minimal@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/minimal.png b/public/assets/vendors/iCheck/skins/minimal/minimal.png new file mode 100644 index 0000000..943be16 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/minimal.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/minimal@2x.png b/public/assets/vendors/iCheck/skins/minimal/minimal@2x.png new file mode 100644 index 0000000..d62291d Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/minimal@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/orange.css b/public/assets/vendors/iCheck/skins/minimal/orange.css new file mode 100644 index 0000000..ba1b9c3 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/orange.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, orange +----------------------------------- */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/orange.png b/public/assets/vendors/iCheck/skins/minimal/orange.png new file mode 100644 index 0000000..f2a3149 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/orange.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/orange@2x.png b/public/assets/vendors/iCheck/skins/minimal/orange@2x.png new file mode 100644 index 0000000..68c8359 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/orange@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/pink.css b/public/assets/vendors/iCheck/skins/minimal/pink.css new file mode 100644 index 0000000..77c5741 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/pink.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, pink +----------------------------------- */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/pink.png b/public/assets/vendors/iCheck/skins/minimal/pink.png new file mode 100644 index 0000000..660553c Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/pink.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/pink@2x.png b/public/assets/vendors/iCheck/skins/minimal/pink@2x.png new file mode 100644 index 0000000..7d7b385 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/pink@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/purple.css b/public/assets/vendors/iCheck/skins/minimal/purple.css new file mode 100644 index 0000000..d509f04 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/purple.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, purple +----------------------------------- */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/purple.png b/public/assets/vendors/iCheck/skins/minimal/purple.png new file mode 100644 index 0000000..48dec79 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/purple.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/purple@2x.png b/public/assets/vendors/iCheck/skins/minimal/purple@2x.png new file mode 100644 index 0000000..3bb7041 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/purple@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/red.css b/public/assets/vendors/iCheck/skins/minimal/red.css new file mode 100644 index 0000000..2280e5b --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/red.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, red +----------------------------------- */ +.icheckbox_minimal-red, +.iradio_minimal-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-red { + background-position: 0 0; +} + .icheckbox_minimal-red.hover { + background-position: -20px 0; + } + .icheckbox_minimal-red.checked { + background-position: -40px 0; + } + .icheckbox_minimal-red.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-red.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-red { + background-position: -100px 0; +} + .iradio_minimal-red.hover { + background-position: -120px 0; + } + .iradio_minimal-red.checked { + background-position: -140px 0; + } + .iradio_minimal-red.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-red.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-red, + .iradio_minimal-red { + background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/red.png b/public/assets/vendors/iCheck/skins/minimal/red.png new file mode 100644 index 0000000..4443f80 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/red.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/red@2x.png b/public/assets/vendors/iCheck/skins/minimal/red@2x.png new file mode 100644 index 0000000..2eb55a6 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/red@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/yellow.css b/public/assets/vendors/iCheck/skins/minimal/yellow.css new file mode 100644 index 0000000..730bb4c --- /dev/null +++ b/public/assets/vendors/iCheck/skins/minimal/yellow.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, yellow +----------------------------------- */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/minimal/yellow.png b/public/assets/vendors/iCheck/skins/minimal/yellow.png new file mode 100644 index 0000000..0999b7e Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/yellow.png differ diff --git a/public/assets/vendors/iCheck/skins/minimal/yellow@2x.png b/public/assets/vendors/iCheck/skins/minimal/yellow@2x.png new file mode 100644 index 0000000..c16f2b7 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/minimal/yellow@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/polaris/polaris.css b/public/assets/vendors/iCheck/skins/polaris/polaris.css new file mode 100644 index 0000000..2a4d519 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/polaris/polaris.css @@ -0,0 +1,59 @@ +/* iCheck plugin Polaris skin +----------------------------------- */ +.icheckbox_polaris, +.iradio_polaris { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 29px; + height: 29px; + background: url(polaris.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_polaris { + background-position: 0 0; +} + .icheckbox_polaris.hover { + background-position: -31px 0; + } + .icheckbox_polaris.checked { + background-position: -62px 0; + } + .icheckbox_polaris.disabled { + background-position: -93px 0; + cursor: default; + } + .icheckbox_polaris.checked.disabled { + background-position: -124px 0; + } + +.iradio_polaris { + background-position: -155px 0; +} + .iradio_polaris.hover { + background-position: -186px 0; + } + .iradio_polaris.checked { + background-position: -217px 0; + } + .iradio_polaris.disabled { + background-position: -248px 0; + cursor: default; + } + .iradio_polaris.checked.disabled { + background-position: -279px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_polaris, + .iradio_polaris { + background-image: url(polaris@2x.png); + -webkit-background-size: 310px 31px; + background-size: 310px 31px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/polaris/polaris.png b/public/assets/vendors/iCheck/skins/polaris/polaris.png new file mode 100644 index 0000000..60c14e6 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/polaris/polaris.png differ diff --git a/public/assets/vendors/iCheck/skins/polaris/polaris@2x.png b/public/assets/vendors/iCheck/skins/polaris/polaris@2x.png new file mode 100644 index 0000000..c75b826 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/polaris/polaris@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/_all.css b/public/assets/vendors/iCheck/skins/square/_all.css new file mode 100644 index 0000000..90c3a69 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/_all.css @@ -0,0 +1,590 @@ +/* iCheck plugin Square skin +----------------------------------- */ +.icheckbox_square, +.iradio_square { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(square.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square { + background-position: 0 0; +} + .icheckbox_square.hover { + background-position: -24px 0; + } + .icheckbox_square.checked { + background-position: -48px 0; + } + .icheckbox_square.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square.checked.disabled { + background-position: -96px 0; + } + +.iradio_square { + background-position: -120px 0; +} + .iradio_square.hover { + background-position: -144px 0; + } + .iradio_square.checked { + background-position: -168px 0; + } + .iradio_square.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square, + .iradio_square { + background-image: url(square@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* red */ +.icheckbox_square-red, +.iradio_square-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-red { + background-position: 0 0; +} + .icheckbox_square-red.hover { + background-position: -24px 0; + } + .icheckbox_square-red.checked { + background-position: -48px 0; + } + .icheckbox_square-red.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-red.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-red { + background-position: -120px 0; +} + .iradio_square-red.hover { + background-position: -144px 0; + } + .iradio_square-red.checked { + background-position: -168px 0; + } + .iradio_square-red.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-red.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-red, + .iradio_square-red { + background-image: url(red@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* green */ +.icheckbox_square-green, +.iradio_square-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-green { + background-position: 0 0; +} + .icheckbox_square-green.hover { + background-position: -24px 0; + } + .icheckbox_square-green.checked { + background-position: -48px 0; + } + .icheckbox_square-green.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-green.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-green { + background-position: -120px 0; +} + .iradio_square-green.hover { + background-position: -144px 0; + } + .iradio_square-green.checked { + background-position: -168px 0; + } + .iradio_square-green.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-green.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-green, + .iradio_square-green { + background-image: url(green@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* blue */ +.icheckbox_square-blue, +.iradio_square-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-blue { + background-position: 0 0; +} + .icheckbox_square-blue.hover { + background-position: -24px 0; + } + .icheckbox_square-blue.checked { + background-position: -48px 0; + } + .icheckbox_square-blue.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-blue.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-blue { + background-position: -120px 0; +} + .iradio_square-blue.hover { + background-position: -144px 0; + } + .iradio_square-blue.checked { + background-position: -168px 0; + } + .iradio_square-blue.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-blue.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-blue, + .iradio_square-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* aero */ +.icheckbox_square-aero, +.iradio_square-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-aero { + background-position: 0 0; +} + .icheckbox_square-aero.hover { + background-position: -24px 0; + } + .icheckbox_square-aero.checked { + background-position: -48px 0; + } + .icheckbox_square-aero.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-aero.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-aero { + background-position: -120px 0; +} + .iradio_square-aero.hover { + background-position: -144px 0; + } + .iradio_square-aero.checked { + background-position: -168px 0; + } + .iradio_square-aero.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-aero.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-aero, + .iradio_square-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* grey */ +.icheckbox_square-grey, +.iradio_square-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-grey { + background-position: 0 0; +} + .icheckbox_square-grey.hover { + background-position: -24px 0; + } + .icheckbox_square-grey.checked { + background-position: -48px 0; + } + .icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-grey.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-grey { + background-position: -120px 0; +} + .iradio_square-grey.hover { + background-position: -144px 0; + } + .iradio_square-grey.checked { + background-position: -168px 0; + } + .iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-grey.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* orange */ +.icheckbox_square-orange, +.iradio_square-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-orange { + background-position: 0 0; +} + .icheckbox_square-orange.hover { + background-position: -24px 0; + } + .icheckbox_square-orange.checked { + background-position: -48px 0; + } + .icheckbox_square-orange.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-orange.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-orange { + background-position: -120px 0; +} + .iradio_square-orange.hover { + background-position: -144px 0; + } + .iradio_square-orange.checked { + background-position: -168px 0; + } + .iradio_square-orange.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-orange.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-orange, + .iradio_square-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* yellow */ +.icheckbox_square-yellow, +.iradio_square-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-yellow { + background-position: 0 0; +} + .icheckbox_square-yellow.hover { + background-position: -24px 0; + } + .icheckbox_square-yellow.checked { + background-position: -48px 0; + } + .icheckbox_square-yellow.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-yellow.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-yellow { + background-position: -120px 0; +} + .iradio_square-yellow.hover { + background-position: -144px 0; + } + .iradio_square-yellow.checked { + background-position: -168px 0; + } + .iradio_square-yellow.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-yellow.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-yellow, + .iradio_square-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* pink */ +.icheckbox_square-pink, +.iradio_square-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-pink { + background-position: 0 0; +} + .icheckbox_square-pink.hover { + background-position: -24px 0; + } + .icheckbox_square-pink.checked { + background-position: -48px 0; + } + .icheckbox_square-pink.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-pink.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-pink { + background-position: -120px 0; +} + .iradio_square-pink.hover { + background-position: -144px 0; + } + .iradio_square-pink.checked { + background-position: -168px 0; + } + .iradio_square-pink.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-pink.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-pink, + .iradio_square-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* purple */ +.icheckbox_square-purple, +.iradio_square-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-purple { + background-position: 0 0; +} + .icheckbox_square-purple.hover { + background-position: -24px 0; + } + .icheckbox_square-purple.checked { + background-position: -48px 0; + } + .icheckbox_square-purple.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-purple.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-purple { + background-position: -120px 0; +} + .iradio_square-purple.hover { + background-position: -144px 0; + } + .iradio_square-purple.checked { + background-position: -168px 0; + } + .iradio_square-purple.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-purple.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-purple, + .iradio_square-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/aero.css b/public/assets/vendors/iCheck/skins/square/aero.css new file mode 100644 index 0000000..e31b3ab --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/aero.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, aero +----------------------------------- */ +.icheckbox_square-aero, +.iradio_square-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-aero { + background-position: 0 0; +} + .icheckbox_square-aero.hover { + background-position: -24px 0; + } + .icheckbox_square-aero.checked { + background-position: -48px 0; + } + .icheckbox_square-aero.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-aero.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-aero { + background-position: -120px 0; +} + .iradio_square-aero.hover { + background-position: -144px 0; + } + .iradio_square-aero.checked { + background-position: -168px 0; + } + .iradio_square-aero.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-aero.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-aero, + .iradio_square-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/aero.png b/public/assets/vendors/iCheck/skins/square/aero.png new file mode 100644 index 0000000..1a332e6 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/aero.png differ diff --git a/public/assets/vendors/iCheck/skins/square/aero@2x.png b/public/assets/vendors/iCheck/skins/square/aero@2x.png new file mode 100644 index 0000000..07c5a02 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/aero@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/blue.css b/public/assets/vendors/iCheck/skins/square/blue.css new file mode 100644 index 0000000..f8db2ab --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/blue.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, blue +----------------------------------- */ +.icheckbox_square-blue, +.iradio_square-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-blue { + background-position: 0 0; +} + .icheckbox_square-blue.hover { + background-position: -24px 0; + } + .icheckbox_square-blue.checked { + background-position: -48px 0; + } + .icheckbox_square-blue.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-blue.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-blue { + background-position: -120px 0; +} + .iradio_square-blue.hover { + background-position: -144px 0; + } + .iradio_square-blue.checked { + background-position: -168px 0; + } + .iradio_square-blue.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-blue.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-blue, + .iradio_square-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/blue.png b/public/assets/vendors/iCheck/skins/square/blue.png new file mode 100644 index 0000000..a3e040f Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/blue.png differ diff --git a/public/assets/vendors/iCheck/skins/square/blue@2x.png b/public/assets/vendors/iCheck/skins/square/blue@2x.png new file mode 100644 index 0000000..8fdea12 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/blue@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/green.css b/public/assets/vendors/iCheck/skins/square/green.css new file mode 100644 index 0000000..23f149b --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/green.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, green +----------------------------------- */ +.icheckbox_square-green, +.iradio_square-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-green { + background-position: 0 0; +} + .icheckbox_square-green.hover { + background-position: -24px 0; + } + .icheckbox_square-green.checked { + background-position: -48px 0; + } + .icheckbox_square-green.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-green.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-green { + background-position: -120px 0; +} + .iradio_square-green.hover { + background-position: -144px 0; + } + .iradio_square-green.checked { + background-position: -168px 0; + } + .iradio_square-green.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-green.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-green, + .iradio_square-green { + background-image: url(green@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/green.png b/public/assets/vendors/iCheck/skins/square/green.png new file mode 100644 index 0000000..465824e Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/green.png differ diff --git a/public/assets/vendors/iCheck/skins/square/green@2x.png b/public/assets/vendors/iCheck/skins/square/green@2x.png new file mode 100644 index 0000000..784e874 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/green@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/grey.css b/public/assets/vendors/iCheck/skins/square/grey.css new file mode 100644 index 0000000..909db1a --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/grey.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, grey +----------------------------------- */ +.icheckbox_square-grey, +.iradio_square-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-grey { + background-position: 0 0; +} + .icheckbox_square-grey.hover { + background-position: -24px 0; + } + .icheckbox_square-grey.checked { + background-position: -48px 0; + } + .icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-grey.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-grey { + background-position: -120px 0; +} + .iradio_square-grey.hover { + background-position: -144px 0; + } + .iradio_square-grey.checked { + background-position: -168px 0; + } + .iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-grey.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/grey.png b/public/assets/vendors/iCheck/skins/square/grey.png new file mode 100644 index 0000000..f693758 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/grey.png differ diff --git a/public/assets/vendors/iCheck/skins/square/grey@2x.png b/public/assets/vendors/iCheck/skins/square/grey@2x.png new file mode 100644 index 0000000..5d6341c Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/grey@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/orange.css b/public/assets/vendors/iCheck/skins/square/orange.css new file mode 100644 index 0000000..c6e5892 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/orange.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, orange +----------------------------------- */ +.icheckbox_square-orange, +.iradio_square-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-orange { + background-position: 0 0; +} + .icheckbox_square-orange.hover { + background-position: -24px 0; + } + .icheckbox_square-orange.checked { + background-position: -48px 0; + } + .icheckbox_square-orange.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-orange.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-orange { + background-position: -120px 0; +} + .iradio_square-orange.hover { + background-position: -144px 0; + } + .iradio_square-orange.checked { + background-position: -168px 0; + } + .iradio_square-orange.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-orange.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-orange, + .iradio_square-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/orange.png b/public/assets/vendors/iCheck/skins/square/orange.png new file mode 100644 index 0000000..8460850 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/orange.png differ diff --git a/public/assets/vendors/iCheck/skins/square/orange@2x.png b/public/assets/vendors/iCheck/skins/square/orange@2x.png new file mode 100644 index 0000000..b1f2319 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/orange@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/pink.css b/public/assets/vendors/iCheck/skins/square/pink.css new file mode 100644 index 0000000..bdab9c7 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/pink.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, pink +----------------------------------- */ +.icheckbox_square-pink, +.iradio_square-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-pink { + background-position: 0 0; +} + .icheckbox_square-pink.hover { + background-position: -24px 0; + } + .icheckbox_square-pink.checked { + background-position: -48px 0; + } + .icheckbox_square-pink.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-pink.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-pink { + background-position: -120px 0; +} + .iradio_square-pink.hover { + background-position: -144px 0; + } + .iradio_square-pink.checked { + background-position: -168px 0; + } + .iradio_square-pink.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-pink.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-pink, + .iradio_square-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/pink.png b/public/assets/vendors/iCheck/skins/square/pink.png new file mode 100644 index 0000000..9c8b4e2 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/pink.png differ diff --git a/public/assets/vendors/iCheck/skins/square/pink@2x.png b/public/assets/vendors/iCheck/skins/square/pink@2x.png new file mode 100644 index 0000000..b1f3a6e Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/pink@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/purple.css b/public/assets/vendors/iCheck/skins/square/purple.css new file mode 100644 index 0000000..4c291b4 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/purple.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, purple +----------------------------------- */ +.icheckbox_square-purple, +.iradio_square-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-purple { + background-position: 0 0; +} + .icheckbox_square-purple.hover { + background-position: -24px 0; + } + .icheckbox_square-purple.checked { + background-position: -48px 0; + } + .icheckbox_square-purple.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-purple.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-purple { + background-position: -120px 0; +} + .iradio_square-purple.hover { + background-position: -144px 0; + } + .iradio_square-purple.checked { + background-position: -168px 0; + } + .iradio_square-purple.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-purple.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-purple, + .iradio_square-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/purple.png b/public/assets/vendors/iCheck/skins/square/purple.png new file mode 100644 index 0000000..6bfc16a Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/purple.png differ diff --git a/public/assets/vendors/iCheck/skins/square/purple@2x.png b/public/assets/vendors/iCheck/skins/square/purple@2x.png new file mode 100644 index 0000000..6d3c8b1 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/purple@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/red.css b/public/assets/vendors/iCheck/skins/square/red.css new file mode 100644 index 0000000..7341bc6 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/red.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, red +----------------------------------- */ +.icheckbox_square-red, +.iradio_square-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-red { + background-position: 0 0; +} + .icheckbox_square-red.hover { + background-position: -24px 0; + } + .icheckbox_square-red.checked { + background-position: -48px 0; + } + .icheckbox_square-red.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-red.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-red { + background-position: -120px 0; +} + .iradio_square-red.hover { + background-position: -144px 0; + } + .iradio_square-red.checked { + background-position: -168px 0; + } + .iradio_square-red.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-red.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-red, + .iradio_square-red { + background-image: url(red@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/red.png b/public/assets/vendors/iCheck/skins/square/red.png new file mode 100644 index 0000000..749675a Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/red.png differ diff --git a/public/assets/vendors/iCheck/skins/square/red@2x.png b/public/assets/vendors/iCheck/skins/square/red@2x.png new file mode 100644 index 0000000..c05700a Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/red@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/square.css b/public/assets/vendors/iCheck/skins/square/square.css new file mode 100644 index 0000000..fb628f9 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/square.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, black +----------------------------------- */ +.icheckbox_square, +.iradio_square { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(square.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square { + background-position: 0 0; +} + .icheckbox_square.hover { + background-position: -24px 0; + } + .icheckbox_square.checked { + background-position: -48px 0; + } + .icheckbox_square.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square.checked.disabled { + background-position: -96px 0; + } + +.iradio_square { + background-position: -120px 0; +} + .iradio_square.hover { + background-position: -144px 0; + } + .iradio_square.checked { + background-position: -168px 0; + } + .iradio_square.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square, + .iradio_square { + background-image: url(square@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/square.png b/public/assets/vendors/iCheck/skins/square/square.png new file mode 100644 index 0000000..2a3c881 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/square.png differ diff --git a/public/assets/vendors/iCheck/skins/square/square@2x.png b/public/assets/vendors/iCheck/skins/square/square@2x.png new file mode 100644 index 0000000..9b56c44 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/square@2x.png differ diff --git a/public/assets/vendors/iCheck/skins/square/yellow.css b/public/assets/vendors/iCheck/skins/square/yellow.css new file mode 100644 index 0000000..23b1123 --- /dev/null +++ b/public/assets/vendors/iCheck/skins/square/yellow.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, yellow +----------------------------------- */ +.icheckbox_square-yellow, +.iradio_square-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-yellow { + background-position: 0 0; +} + .icheckbox_square-yellow.hover { + background-position: -24px 0; + } + .icheckbox_square-yellow.checked { + background-position: -48px 0; + } + .icheckbox_square-yellow.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-yellow.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-yellow { + background-position: -120px 0; +} + .iradio_square-yellow.hover { + background-position: -144px 0; + } + .iradio_square-yellow.checked { + background-position: -168px 0; + } + .iradio_square-yellow.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-yellow.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-yellow, + .iradio_square-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/public/assets/vendors/iCheck/skins/square/yellow.png b/public/assets/vendors/iCheck/skins/square/yellow.png new file mode 100644 index 0000000..b6c0330 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/yellow.png differ diff --git a/public/assets/vendors/iCheck/skins/square/yellow@2x.png b/public/assets/vendors/iCheck/skins/square/yellow@2x.png new file mode 100644 index 0000000..6b8e328 Binary files /dev/null and b/public/assets/vendors/iCheck/skins/square/yellow@2x.png differ diff --git a/public/documents/.htaccess b/public/documents/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/public/documents/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/public/documents/branch_files/erp_1706053848y1P8Re.pdf b/public/documents/branch_files/erp_1706053848y1P8Re.pdf new file mode 100644 index 0000000..cb20c09 Binary files /dev/null and b/public/documents/branch_files/erp_1706053848y1P8Re.pdf differ diff --git a/requirements.md b/requirements.md index 3e3afa0..54a6d9a 100755 --- a/requirements.md +++ b/requirements.md @@ -12,43 +12,7 @@ - - Live - - Inactive -List of all Customers -Categorized in - i. Prospective - ii. Live -Against these Customers -The Account Manager -- Deadline Wednesday 11-01-2023 (2pm) - -# Client Details Editing flow -- account manager edits -- Effie, Charity, Approves - -# Sam -When we get a new client we fail to track various stages. - -Discussion/Business case analysis -Business case approved - i. Proceed to Document review -No business case - i. Archived -Document Review -Tech Dcoument -Contract -NDA if available -Contract signing stage -Partner signed -Click Signed -Fully Executed or -Archived -Integration -Live - -This will mean a client will go through various stages before -they can be a LIVE customer. This will no longer -be categorized by input data or by process or Admin. - diff --git a/resources/views/client/edit.blade.php b/resources/views/client/edit.blade.php index 28ed036..9914eb0 100755 --- a/resources/views/client/edit.blade.php +++ b/resources/views/client/edit.blade.php @@ -11,6 +11,7 @@
@@ -28,6 +29,7 @@

{!! Form::model($client, [ 'method' => 'PATCH', 'files' => 'true', 'url' => ['clients', $client], 'class' => 'form-horizontal form-label-left']) !!} +
@@ -334,16 +336,18 @@
+ @if($current_pending_stage !== 'COMPLETED')
- -
- - {!! Form::select('progress_indicators[]', $progress_indicators, $current_progress_indicators, ['class' => 'form-control' , 'id' => 'progressIndicators', 'multiple' => 'true']) !!} - {!! $errors->first('progress_indicators', '

:message

') !!} + +
+ + {!! Form::select('onboarding_sub_items_progress[]', $onboarding_sub_items, $onboarding_sub_items_progress, ['class' => 'form-control' , 'id' => 'progressIndicators', 'multiple' => 'true']) !!} + {!! $errors->first('onboarding_sub_items', '

:message

') !!}
+ @endif
diff --git a/resources/views/client/index-tabulator.blade.php b/resources/views/client/index-tabulator.blade.php index 618a04f..2c328a9 100644 --- a/resources/views/client/index-tabulator.blade.php +++ b/resources/views/client/index-tabulator.blade.php @@ -108,6 +108,12 @@ field: "accountMgr", sorter: "string", }, + { + title: "Onboarding Status", + field: "progress_indicator", + sorter: "string", + }, + /* { title:"Progress", field:"progress_indicator_score", sorter:"number", @@ -116,6 +122,7 @@ width:200, editable:true }, + */ { title: "Status", field: "status", diff --git a/resources/views/client/onboarding_show.blade.php b/resources/views/client/onboarding_show.blade.php new file mode 100644 index 0000000..e2ad55d --- /dev/null +++ b/resources/views/client/onboarding_show.blade.php @@ -0,0 +1,91 @@ +@extends('layouts.master') +@section('page_title') + @if(isset($page_title)) + {{ $page_title }} + @endif +@endsection +@section('content') +
+
+
+ +
+
+
+
+
+
+
+ Update Onboarding Checklist + @include('commons.notifications') +
+
+ {{-- start of content --}} +
+
+ +
+
+

Agreement Stage

+
+
+
+ + {!! Form::select('progress_indicators[]', $progress_indicators, $current_progress_indicators, ['class' => 'form-control' , 'id' => 'progressIndicators', 'multiple' => 'true']) !!} + {!! $errors->first('progress_indicators', '

:message

') !!} +
+
+
+

Interconnectional (Bilateral)

+
+ +
+

Tests Completed

+
+ +
+

Rate Card Sharing

+
+ +
+

Rates Uploaded

+
+ +
+
+ +
+
+
+ +
+ +
+ {{-- end of x_content --}} +
+ {{-- end of x_panel --}} +
+
+ +
+ +@endsection + +@section('javascript') + +@endsection diff --git a/resources/views/client/partials/progress_indicator_details.blade.php b/resources/views/client/partials/progress_indicator_details.blade.php new file mode 100644 index 0000000..a404c58 --- /dev/null +++ b/resources/views/client/partials/progress_indicator_details.blade.php @@ -0,0 +1,48 @@ + + diff --git a/resources/views/client/partials/progress_indicator_details.blade.php.bak.php b/resources/views/client/partials/progress_indicator_details.blade.php.bak.php new file mode 100644 index 0000000..73abcf2 --- /dev/null +++ b/resources/views/client/partials/progress_indicator_details.blade.php.bak.php @@ -0,0 +1,34 @@ + + diff --git a/resources/views/client/show-readonly.blade.php b/resources/views/client/show-readonly.blade.php index f1ed103..f4d38f6 100644 --- a/resources/views/client/show-readonly.blade.php +++ b/resources/views/client/show-readonly.blade.php @@ -11,7 +11,8 @@
@@ -216,14 +217,15 @@
-
+
- -

Documents

+
+ + +

Documents

@if(!$showdocuments->isEmpty() == true)
-
@foreach($showdocuments as $docs)
@@ -239,6 +241,7 @@ @else

No Documents found

@endif +
@@ -336,6 +339,8 @@ @endsection @section('javascript') + + + + + @endsection \ No newline at end of file diff --git a/resources/views/dashboard/index_two.blade.php b/resources/views/dashboard/index_two.blade.php index 311a298..f384e72 100644 --- a/resources/views/dashboard/index_two.blade.php +++ b/resources/views/dashboard/index_two.blade.php @@ -15,15 +15,14 @@
{{ $total }}
-

Total Clients

- +

Total Clients

{{ $sms }}
-

SMS Clients

+

SMS Clients

@@ -31,7 +30,7 @@
{{ $ussd }}
-

USSD Client

+

USSD Client

@@ -39,7 +38,7 @@
{{ $voice }}
-

Voice Clients

+

Voice Clients

@@ -53,7 +52,7 @@
-

Recent Activities

+

Recent Activities

@@ -61,35 +60,24 @@
@@ -99,7 +87,7 @@
-

Expiring Contracts

+

Contracts Expiry Dates

@@ -108,12 +96,17 @@ @foreach($expiring_contracts as $row) @endforeach @@ -136,60 +129,40 @@
-

Expiring Certificates

+

Newly Added Clients

+ @if($recent_clients->isEmpty() == false) + @foreach($recent_clients as $recentrow) -
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 83bacdb..1b4924e 100755 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -40,6 +40,7 @@ diff --git a/resources/views/reports/recent_clients.blade.php b/resources/views/reports/recent_clients.blade.php new file mode 100644 index 0000000..5f3cb95 --- /dev/null +++ b/resources/views/reports/recent_clients.blade.php @@ -0,0 +1,155 @@ +@extends('layouts.master') + @section('page_title') + @if(isset($page_title)) + {{ $page_title }} + @endif + @endsection +@section('css') + +@endsection +@section('content') +
+
+
+
+ +
+
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+ @include('commons.notifications') +
+
+
+

Recent Clients

+ +
+
+
+ +
+
+ + +
+
+
+
+
+
+
+ +@endsection + +@section('javascript') + + + + + + +@endsection diff --git a/resources/views/test.php b/resources/views/test.php new file mode 100644 index 0000000..3c811a7 --- /dev/null +++ b/resources/views/test.php @@ -0,0 +1,11 @@ + + + + + + my title + + + + + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 934fc87..703dca5 100755 --- a/routes/web.php +++ b/routes/web.php @@ -38,7 +38,7 @@ Route::post('account/register', 'LoginController@registerAccount'); Route::get('ussd/dashboard', 'UssdDashboardController@index'); -Route::group(['middleware' => ['checklogin']], function(){ +Route::group(['middleware' => ['checklogin', 'checkcurrentlylogged']], function(){ //Route::get('/', 'MeetingReportsController@showDetails'); Route::get('dashboard/get_events', 'DashboardController@getEvents'); @@ -78,6 +78,7 @@ Route::group(['middleware' => ['checklogin']], function(){ Route::get('clients/downloadfile/{id}', 'ClientsController@getClientFile'); + Route::get('clients/onboarding/{id}', 'ClientsController@showOnboardingForm'); Route::post('clients/shortcode_store', 'ClientsController@shortcodeStore'); Route::post('clients/notes_update', 'ClientsController@notesUpdate'); Route::post('clients/notes_store', 'ClientsController@notesStore'); @@ -98,6 +99,8 @@ Route::group(['middleware' => ['checklogin']], function(){ Route::get('clients/services/{id}', 'ClientsController@showservices')->name('clients.services'); Route::resource('clients', 'ClientsController'); + Route::get('reports/recentclients', 'ReportsController@getRecentClients'); + Route::get('reports/recentclients/all', 'ReportsController@getRecentClientsJson'); Route::get('reports/search', 'MeetingReportsController@search'); Route::post('reports/samcomment', 'MeetingReportsController@store_sam_comment'); Route::resource('reports', 'MeetingReportsController'); diff --git a/scrap-board.php b/scrap-board.php new file mode 100644 index 0000000..b3dd404 --- /dev/null +++ b/scrap-board.php @@ -0,0 +1,48 @@ + "COMPLETED", "interconnectivity" => "PENDING" +] + + +if(date('D') == 'Sat' || date('D') == 'Sun') { + echo "Today is Saturday or Sunday."; +} else { + echo "Today is not Saturday or Sunday."; +} + +/* + $current_date = new \DateTime(date('Y-m-d')); + + $expiry_date = new \DateTime($showclient->contract_validity); + + $diff = date_diff($current_date, $expiry_date); + dd($diff); + $polar = $diff->format("%R"); + + $months = $diff->format("%m"); + + $days = $diff->format("%a"); + dd($days); + */ + /* + $date1 = "2024-01-01"; + $date2 = "2023-01-11"; + + $diff = abs(strtotime($date2) - strtotime($date1)); + $days = floor($diff / (60*60*24)); + dd($days); + $diff = abs(strtotime($expiry_date) - strtotime($current_date)); + $days = floor($diff / (60*60*24)); + */ + + ?> \ No newline at end of file